package netx import ( "context" "net/http" "testing" "github.com/apex/log" "github.com/ooni/probe-cli/v3/internal/bytecounter" "github.com/ooni/probe-cli/v3/internal/netxlite" "github.com/ooni/probe-cli/v3/internal/tracex" ) func TestHTTPTransportWorkingAsIntended(t *testing.T) { if testing.Short() { t.Skip("skip test in short mode") } log.SetLevel(log.DebugLevel) counter := bytecounter.New() config := Config{ BogonIsError: true, ByteCounter: counter, CacheResolutions: true, ContextByteCounting: true, Logger: log.Log, ReadWriteSaver: &tracex.Saver{}, Saver: &tracex.Saver{}, } txp := NewHTTPTransport(config) client := &http.Client{Transport: txp} resp, err := client.Get("https://www.google.com") if err != nil { t.Fatal(err) } if _, err = netxlite.ReadAllContext(context.Background(), resp.Body); err != nil { t.Fatal(err) } if err = resp.Body.Close(); err != nil { t.Fatal(err) } if counter.Sent.Load() <= 0 { t.Fatal("no bytes sent?!") } if counter.Received.Load() <= 0 { t.Fatal("no bytes received?!") } if ev := config.ReadWriteSaver.Read(); len(ev) <= 0 { t.Fatal("no R/W events?!") } if ev := config.Saver.Read(); len(ev) <= 0 { t.Fatal("no non-I/O events?!") } }