fix(netxlite/quic): wrap Close (#509)
While there, make sure netxlite has 100% coverage. Part of https://github.com/ooni/probe/issues/1733 and diff has been extracted from https://github.com/ooni/probe-cli/pull/506.
This commit is contained in:
parent
deb1589bdb
commit
273774bb03
|
@ -75,7 +75,12 @@ func TestHTTPTransportLogger(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
client := &http.Client{Transport: txp}
|
client := &http.Client{Transport: txp}
|
||||||
resp, err := client.Get("https://www.google.com")
|
req, err := http.NewRequest("GET", "https://www.google.com", nil)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
req.Header.Set("User-Agent", "miniooni/0.1.0-dev")
|
||||||
|
resp, err := client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -394,6 +394,16 @@ func (c *quicErrWrapperUDPLikeConn) ReadFrom(b []byte) (int, net.Addr, error) {
|
||||||
return n, addr, nil
|
return n, addr, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Close implements quicx.UDPLikeConn.Close.
|
||||||
|
func (c *quicErrWrapperUDPLikeConn) Close() error {
|
||||||
|
err := c.UDPLikeConn.Close()
|
||||||
|
if err != nil {
|
||||||
|
return errorsx.NewErrWrapper(
|
||||||
|
errorsx.ClassifyGenericError, errorsx.ReadFromOperation, err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// quicDialerErrWrapper is a dialer that performs quic err wrapping
|
// quicDialerErrWrapper is a dialer that performs quic err wrapping
|
||||||
type quicDialerErrWrapper struct {
|
type quicDialerErrWrapper struct {
|
||||||
QUICDialer
|
QUICDialer
|
||||||
|
|
|
@ -472,6 +472,7 @@ func TestQUICLoggerDialer(t *testing.T) {
|
||||||
func TestNewSingleUseQUICDialer(t *testing.T) {
|
func TestNewSingleUseQUICDialer(t *testing.T) {
|
||||||
sess := &mocks.QUICEarlySession{}
|
sess := &mocks.QUICEarlySession{}
|
||||||
qd := NewSingleUseQUICDialer(sess)
|
qd := NewSingleUseQUICDialer(sess)
|
||||||
|
defer qd.CloseIdleConnections()
|
||||||
outsess, err := qd.DialContext(
|
outsess, err := qd.DialContext(
|
||||||
context.Background(), "", "", &tls.Config{}, &quic.Config{})
|
context.Background(), "", "", &tls.Config{}, &quic.Config{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -618,6 +619,37 @@ func TestQUICErrWrapperUDPLikeConn(t *testing.T) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("Close", func(t *testing.T) {
|
||||||
|
t.Run("on success", func(t *testing.T) {
|
||||||
|
conn := &quicErrWrapperUDPLikeConn{
|
||||||
|
UDPLikeConn: &mocks.QUICUDPLikeConn{
|
||||||
|
MockClose: func() error {
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
err := conn.Close()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("on failure", func(t *testing.T) {
|
||||||
|
expectedErr := io.EOF
|
||||||
|
conn := &quicErrWrapperUDPLikeConn{
|
||||||
|
UDPLikeConn: &mocks.QUICUDPLikeConn{
|
||||||
|
MockClose: func() error {
|
||||||
|
return expectedErr
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
err := conn.Close()
|
||||||
|
if err == nil || err.Error() != errorsx.FailureEOFError {
|
||||||
|
t.Fatal("unexpected err", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestQUICDialerErrWrapper(t *testing.T) {
|
func TestQUICDialerErrWrapper(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user