refactor: sync messages with spec draft (#435)
Work part of: https://github.com/ooni/probe/issues/1733 Spec draft: https://github.com/ooni/spec/pull/219
This commit is contained in:
@@ -114,7 +114,7 @@ func (g *DefaultGenerator) GenerateHTTPEndpoint(ctx context.Context, rt *RoundTr
|
||||
Endpoint: endpoint,
|
||||
Resolver: g.resolver,
|
||||
})
|
||||
currentEndpoint.TCPConnectMeasurement = &TCPConnectMeasurement{
|
||||
currentEndpoint.TCPConnect = &TCPConnectMeasurement{
|
||||
Failure: newfailure(err),
|
||||
}
|
||||
if err != nil {
|
||||
@@ -123,7 +123,7 @@ func (g *DefaultGenerator) GenerateHTTPEndpoint(ctx context.Context, rt *RoundTr
|
||||
defer tcpConn.Close()
|
||||
|
||||
// prepare HTTPRoundTripMeasurement of this endpoint
|
||||
currentEndpoint.HTTPRoundTripMeasurement = &HTTPRoundTripMeasurement{
|
||||
currentEndpoint.HTTPRoundTrip = &HTTPRoundTripMeasurement{
|
||||
Request: &HTTPRequestMeasurement{
|
||||
Headers: rt.Request.Header,
|
||||
Method: "GET",
|
||||
@@ -137,13 +137,13 @@ func (g *DefaultGenerator) GenerateHTTPEndpoint(ctx context.Context, rt *RoundTr
|
||||
resp, body, err := HTTPDo(rt.Request, transport)
|
||||
if err != nil {
|
||||
// failed Response
|
||||
currentEndpoint.HTTPRoundTripMeasurement.Response = &HTTPResponseMeasurement{
|
||||
currentEndpoint.HTTPRoundTrip.Response = &HTTPResponseMeasurement{
|
||||
Failure: newfailure(err),
|
||||
}
|
||||
return currentEndpoint
|
||||
}
|
||||
// successful Response
|
||||
currentEndpoint.HTTPRoundTripMeasurement.Response = &HTTPResponseMeasurement{
|
||||
currentEndpoint.HTTPRoundTrip.Response = &HTTPResponseMeasurement{
|
||||
BodyLength: int64(len(body)),
|
||||
Failure: nil,
|
||||
Headers: resp.Header,
|
||||
@@ -168,7 +168,7 @@ func (g *DefaultGenerator) GenerateHTTPSEndpoint(ctx context.Context, rt *RoundT
|
||||
Endpoint: endpoint,
|
||||
Resolver: g.resolver,
|
||||
})
|
||||
currentEndpoint.TCPConnectMeasurement = &TCPConnectMeasurement{
|
||||
currentEndpoint.TCPConnect = &TCPConnectMeasurement{
|
||||
Failure: newfailure(err),
|
||||
}
|
||||
if err != nil {
|
||||
@@ -177,7 +177,7 @@ func (g *DefaultGenerator) GenerateHTTPSEndpoint(ctx context.Context, rt *RoundT
|
||||
defer tcpConn.Close()
|
||||
|
||||
tlsConn, err = TLSDo(tcpConn, rt.Request.URL.Hostname())
|
||||
currentEndpoint.TLSHandshakeMeasurement = &TLSHandshakeMeasurement{
|
||||
currentEndpoint.TLSHandshake = &TLSHandshakeMeasurement{
|
||||
Failure: newfailure(err),
|
||||
}
|
||||
if err != nil {
|
||||
@@ -186,7 +186,7 @@ func (g *DefaultGenerator) GenerateHTTPSEndpoint(ctx context.Context, rt *RoundT
|
||||
defer tlsConn.Close()
|
||||
|
||||
// prepare HTTPRoundTripMeasurement of this endpoint
|
||||
currentEndpoint.HTTPRoundTripMeasurement = &HTTPRoundTripMeasurement{
|
||||
currentEndpoint.HTTPRoundTrip = &HTTPRoundTripMeasurement{
|
||||
Request: &HTTPRequestMeasurement{
|
||||
Headers: rt.Request.Header,
|
||||
Method: "GET",
|
||||
@@ -200,13 +200,13 @@ func (g *DefaultGenerator) GenerateHTTPSEndpoint(ctx context.Context, rt *RoundT
|
||||
resp, body, err := HTTPDo(rt.Request, transport)
|
||||
if err != nil {
|
||||
// failed Response
|
||||
currentEndpoint.HTTPRoundTripMeasurement.Response = &HTTPResponseMeasurement{
|
||||
currentEndpoint.HTTPRoundTrip.Response = &HTTPResponseMeasurement{
|
||||
Failure: newfailure(err),
|
||||
}
|
||||
return currentEndpoint
|
||||
}
|
||||
// successful Response
|
||||
currentEndpoint.HTTPRoundTripMeasurement.Response = &HTTPResponseMeasurement{
|
||||
currentEndpoint.HTTPRoundTrip.Response = &HTTPResponseMeasurement{
|
||||
BodyLength: int64(len(body)),
|
||||
Failure: nil,
|
||||
Headers: resp.Header,
|
||||
@@ -234,14 +234,14 @@ func (g *DefaultGenerator) GenerateH3Endpoint(ctx context.Context, rt *RoundTrip
|
||||
TLSConf: tlsConf,
|
||||
Resolver: g.resolver,
|
||||
})
|
||||
currentEndpoint.QUICHandshakeMeasurement = &TLSHandshakeMeasurement{
|
||||
currentEndpoint.QUICHandshake = &TLSHandshakeMeasurement{
|
||||
Failure: newfailure(err),
|
||||
}
|
||||
if err != nil {
|
||||
return currentEndpoint
|
||||
}
|
||||
// prepare HTTPRoundTripMeasurement of this endpoint
|
||||
currentEndpoint.HTTPRoundTripMeasurement = &HTTPRoundTripMeasurement{
|
||||
currentEndpoint.HTTPRoundTrip = &HTTPRoundTripMeasurement{
|
||||
Request: &HTTPRequestMeasurement{
|
||||
Headers: rt.Request.Header,
|
||||
Method: "GET",
|
||||
@@ -255,13 +255,13 @@ func (g *DefaultGenerator) GenerateH3Endpoint(ctx context.Context, rt *RoundTrip
|
||||
resp, body, err := HTTPDo(rt.Request, transport)
|
||||
if err != nil {
|
||||
// failed Response
|
||||
currentEndpoint.HTTPRoundTripMeasurement.Response = &HTTPResponseMeasurement{
|
||||
currentEndpoint.HTTPRoundTrip.Response = &HTTPResponseMeasurement{
|
||||
Failure: newfailure(err),
|
||||
}
|
||||
return currentEndpoint
|
||||
}
|
||||
// successful Response
|
||||
currentEndpoint.HTTPRoundTripMeasurement.Response = &HTTPResponseMeasurement{
|
||||
currentEndpoint.HTTPRoundTrip.Response = &HTTPResponseMeasurement{
|
||||
BodyLength: int64(len(body)),
|
||||
Failure: nil,
|
||||
Headers: resp.Header,
|
||||
|
||||
@@ -220,10 +220,10 @@ func TestGenerateHTTP(t *testing.T) {
|
||||
if endpointMeasurement == nil {
|
||||
t.Fatal("unexpected nil urlMeasurement")
|
||||
}
|
||||
if endpointMeasurement.TCPConnectMeasurement == nil {
|
||||
if endpointMeasurement.TCPConnect == nil {
|
||||
t.Fatal("TCPConnectMeasurement should not be nil")
|
||||
}
|
||||
if endpointMeasurement.HTTPRoundTripMeasurement == nil {
|
||||
if endpointMeasurement.HTTPRoundTrip == nil {
|
||||
t.Fatal("HTTPRoundTripMeasurement should not be nil")
|
||||
}
|
||||
}
|
||||
@@ -248,13 +248,13 @@ func TestGenerateHTTPS(t *testing.T) {
|
||||
if endpointMeasurement == nil {
|
||||
t.Fatal("unexpected nil urlMeasurement")
|
||||
}
|
||||
if endpointMeasurement.TCPConnectMeasurement == nil {
|
||||
if endpointMeasurement.TCPConnect == nil {
|
||||
t.Fatal("TCPConnectMeasurement should not be nil")
|
||||
}
|
||||
if endpointMeasurement.TLSHandshakeMeasurement == nil {
|
||||
if endpointMeasurement.TLSHandshake == nil {
|
||||
t.Fatal("TCPConnectMeasurement should not be nil")
|
||||
}
|
||||
if endpointMeasurement.HTTPRoundTripMeasurement == nil {
|
||||
if endpointMeasurement.HTTPRoundTrip == nil {
|
||||
t.Fatal("HTTPRoundTripMeasurement should not be nil")
|
||||
}
|
||||
}
|
||||
@@ -279,13 +279,13 @@ func TestGenerateHTTPSTLSFailure(t *testing.T) {
|
||||
if endpointMeasurement == nil {
|
||||
t.Fatal("unexpected nil urlMeasurement")
|
||||
}
|
||||
if endpointMeasurement.TCPConnectMeasurement == nil {
|
||||
if endpointMeasurement.TCPConnect == nil {
|
||||
t.Fatal("TCPConnectMeasurement should not be nil")
|
||||
}
|
||||
if endpointMeasurement.TLSHandshakeMeasurement == nil {
|
||||
if endpointMeasurement.TLSHandshake == nil {
|
||||
t.Fatal("TCPConnectMeasurement should not be nil")
|
||||
}
|
||||
if endpointMeasurement.HTTPRoundTripMeasurement != nil {
|
||||
if endpointMeasurement.HTTPRoundTrip != nil {
|
||||
t.Fatal("HTTPRoundTripMeasurement should be nil")
|
||||
}
|
||||
}
|
||||
@@ -310,10 +310,10 @@ func TestGenerateH3(t *testing.T) {
|
||||
if endpointMeasurement == nil {
|
||||
t.Fatal("unexpected nil urlMeasurement")
|
||||
}
|
||||
if endpointMeasurement.QUICHandshakeMeasurement == nil {
|
||||
if endpointMeasurement.QUICHandshake == nil {
|
||||
t.Fatal("TCPConnectMeasurement should not be nil")
|
||||
}
|
||||
if endpointMeasurement.HTTPRoundTripMeasurement == nil {
|
||||
if endpointMeasurement.HTTPRoundTrip == nil {
|
||||
t.Fatal("HTTPRoundTripMeasurement should not be nil")
|
||||
}
|
||||
}
|
||||
@@ -340,13 +340,13 @@ func TestGenerateTCPDoFails(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatal("unexpected err")
|
||||
}
|
||||
if endpointMeasurement.TCPConnectMeasurement == nil {
|
||||
if endpointMeasurement.TCPConnect == nil {
|
||||
t.Fatal("QUIC handshake should not be nil")
|
||||
}
|
||||
if endpointMeasurement.TCPConnectMeasurement.Failure == nil {
|
||||
if endpointMeasurement.TCPConnect.Failure == nil {
|
||||
t.Fatal("expected an error here")
|
||||
}
|
||||
if *endpointMeasurement.TCPConnectMeasurement.Failure != *newfailure(expected) {
|
||||
if *endpointMeasurement.TCPConnect.Failure != *newfailure(expected) {
|
||||
t.Fatal("unexpected error type")
|
||||
}
|
||||
}
|
||||
@@ -373,13 +373,13 @@ func TestGenerateQUICDoFails(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatal("unexpected err")
|
||||
}
|
||||
if endpointMeasurement.QUICHandshakeMeasurement == nil {
|
||||
if endpointMeasurement.QUICHandshake == nil {
|
||||
t.Fatal("QUIC handshake should not be nil")
|
||||
}
|
||||
if endpointMeasurement.QUICHandshakeMeasurement.Failure == nil {
|
||||
if endpointMeasurement.QUICHandshake.Failure == nil {
|
||||
t.Fatal("expected an error here")
|
||||
}
|
||||
if *endpointMeasurement.QUICHandshakeMeasurement.Failure != *newfailure(expected) {
|
||||
if *endpointMeasurement.QUICHandshake.Failure != *newfailure(expected) {
|
||||
t.Fatal("unexpected error type")
|
||||
}
|
||||
}
|
||||
@@ -441,22 +441,22 @@ func TestGenerateHTTPDoFails(t *testing.T) {
|
||||
t.Fatal("unexpected number of endpoints", len(u.Endpoints))
|
||||
}
|
||||
// this can occur when the network is unreachable, but it is irrelevant for checking HTTP behavior
|
||||
if u.Endpoints[0].TCPConnectMeasurement != nil && u.Endpoints[0].TCPConnectMeasurement.Failure != nil {
|
||||
if u.Endpoints[0].TCPConnect != nil && u.Endpoints[0].TCPConnect.Failure != nil {
|
||||
continue
|
||||
}
|
||||
if u.Endpoints[0].QUICHandshakeMeasurement != nil && u.Endpoints[0].QUICHandshakeMeasurement.Failure != nil {
|
||||
if u.Endpoints[0].QUICHandshake != nil && u.Endpoints[0].QUICHandshake.Failure != nil {
|
||||
continue
|
||||
}
|
||||
if u.Endpoints[0].HTTPRoundTripMeasurement == nil {
|
||||
t.Fatal("roundtrip should not be nil", u.Endpoints[0].TCPConnectMeasurement.Failure, "jaaaa")
|
||||
if u.Endpoints[0].HTTPRoundTrip == nil {
|
||||
t.Fatal("roundtrip should not be nil", u.Endpoints[0].TCPConnect.Failure, "jaaaa")
|
||||
}
|
||||
if u.Endpoints[0].HTTPRoundTripMeasurement.Response == nil {
|
||||
if u.Endpoints[0].HTTPRoundTrip.Response == nil {
|
||||
t.Fatal("roundtrip response should not be nil")
|
||||
}
|
||||
if u.Endpoints[0].HTTPRoundTripMeasurement.Response.Failure == nil {
|
||||
if u.Endpoints[0].HTTPRoundTrip.Response.Failure == nil {
|
||||
t.Fatal("expected an HTTP error")
|
||||
}
|
||||
if !strings.HasSuffix(*u.Endpoints[0].HTTPRoundTripMeasurement.Response.Failure, expected.Error()) {
|
||||
if !strings.HasSuffix(*u.Endpoints[0].HTTPRoundTrip.Response.Failure, expected.Error()) {
|
||||
t.Fatal("unexpected failure type")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
|
||||
type (
|
||||
CtrlRequest = websteps.CtrlRequest
|
||||
ControlResponse = websteps.ControlResponse
|
||||
ControlResponse = websteps.CtrlResponse
|
||||
)
|
||||
|
||||
var ErrInternalServer = errors.New("internal server error")
|
||||
@@ -45,11 +45,11 @@ func Measure(ctx context.Context, creq *CtrlRequest, config *Config) (*ControlRe
|
||||
if checker == nil {
|
||||
checker = &DefaultInitChecker{resolver: resolver}
|
||||
}
|
||||
URL, err = checker.InitialChecks(creq.HTTPRequest)
|
||||
URL, err = checker.InitialChecks(creq.URL)
|
||||
if err != nil {
|
||||
// return a valid response in case of NXDOMAIN so the probe can compare the failure
|
||||
if err == ErrNoSuchHost {
|
||||
return newDNSFailedResponse(err, creq.HTTPRequest), nil
|
||||
return newDNSFailedResponse(err, creq.URL), nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
@@ -57,7 +57,7 @@ func Measure(ctx context.Context, creq *CtrlRequest, config *Config) (*ControlRe
|
||||
if explorer == nil {
|
||||
explorer = &DefaultExplorer{resolver: resolver}
|
||||
}
|
||||
rts, err := explorer.Explore(URL, creq.HTTPRequestHeaders)
|
||||
rts, err := explorer.Explore(URL, creq.Headers)
|
||||
if err != nil {
|
||||
return nil, ErrInternalServer
|
||||
}
|
||||
@@ -69,7 +69,7 @@ func Measure(ctx context.Context, creq *CtrlRequest, config *Config) (*ControlRe
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &ControlResponse{URLMeasurements: meas}, nil
|
||||
return &ControlResponse{URLs: meas}, nil
|
||||
}
|
||||
|
||||
// newDNSFailedResponse creates a new response with one URLMeasurement entry
|
||||
@@ -82,7 +82,7 @@ func newDNSFailedResponse(err error, URL string) *ControlResponse {
|
||||
Failure: newfailure(err),
|
||||
},
|
||||
}
|
||||
resp.URLMeasurements = append(resp.URLMeasurements, m)
|
||||
resp.URLs = append(resp.URLs, m)
|
||||
return resp
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import (
|
||||
|
||||
func TestMeasureSuccess(t *testing.T) {
|
||||
req := &CtrlRequest{
|
||||
HTTPRequest: "https://example.com",
|
||||
URL: "https://example.com",
|
||||
}
|
||||
resp, err := Measure(context.Background(), req, &Config{})
|
||||
if err != nil {
|
||||
@@ -48,7 +48,7 @@ var ErrExpectedGenerate error = errors.New("expected error generator")
|
||||
|
||||
func TestMeasureInitialChecksFail(t *testing.T) {
|
||||
req := &CtrlRequest{
|
||||
HTTPRequest: "https://example.com",
|
||||
URL: "https://example.com",
|
||||
}
|
||||
resp, err := Measure(context.Background(), req, &Config{checker: &MockChecker{err: ErrExpectedCheck}})
|
||||
if err == nil {
|
||||
@@ -64,7 +64,7 @@ func TestMeasureInitialChecksFail(t *testing.T) {
|
||||
|
||||
func TestMeasureInitialChecksFailWithNXDOMAIN(t *testing.T) {
|
||||
req := &CtrlRequest{
|
||||
HTTPRequest: "https://example.com",
|
||||
URL: "https://example.com",
|
||||
}
|
||||
resp, err := Measure(context.Background(), req, &Config{checker: &MockChecker{err: ErrNoSuchHost}})
|
||||
if err != nil {
|
||||
@@ -73,20 +73,20 @@ func TestMeasureInitialChecksFailWithNXDOMAIN(t *testing.T) {
|
||||
if resp == nil {
|
||||
t.Fatal("resp should not be nil")
|
||||
}
|
||||
if len(resp.URLMeasurements) != 1 {
|
||||
if len(resp.URLs) != 1 {
|
||||
t.Fatal("unexpected number of measurements")
|
||||
}
|
||||
if resp.URLMeasurements[0].DNS == nil {
|
||||
if resp.URLs[0].DNS == nil {
|
||||
t.Fatal("DNS entry should not be nil")
|
||||
}
|
||||
if *resp.URLMeasurements[0].DNS.Failure != errorsx.FailureDNSNXDOMAINError {
|
||||
if *resp.URLs[0].DNS.Failure != errorsx.FailureDNSNXDOMAINError {
|
||||
t.Fatal("unexpected failure")
|
||||
}
|
||||
}
|
||||
|
||||
func TestMeasureExploreFails(t *testing.T) {
|
||||
req := &CtrlRequest{
|
||||
HTTPRequest: "https://example.com",
|
||||
URL: "https://example.com",
|
||||
}
|
||||
resp, err := Measure(context.Background(), req, &Config{explorer: &MockExplorer{}})
|
||||
if err == nil {
|
||||
@@ -102,7 +102,7 @@ func TestMeasureExploreFails(t *testing.T) {
|
||||
|
||||
func TestMeasureGenerateFails(t *testing.T) {
|
||||
req := &CtrlRequest{
|
||||
HTTPRequest: "https://example.com",
|
||||
URL: "https://example.com",
|
||||
}
|
||||
resp, err := Measure(context.Background(), req, &Config{generator: &MockGenerator{}})
|
||||
if err == nil {
|
||||
|
||||
@@ -13,5 +13,5 @@ type (
|
||||
TLSHandshakeMeasurement = websteps.TLSHandshakeMeasurement
|
||||
HTTPRequestMeasurement = websteps.HTTPRequestMeasurement
|
||||
HTTPResponseMeasurement = websteps.HTTPResponseMeasurement
|
||||
RoundTrip = websteps.RoundTrip
|
||||
RoundTrip = websteps.RoundTripInfo
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user