forked from TrueCloudLab/multinet
[#3] dialer: Add default dialer.
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
parent
5298ec4295
commit
ee601a7b5f
2 changed files with 60 additions and 0 deletions
31
default.go
Normal file
31
default.go
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
package multinet
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
defaultDialer Multidialer
|
||||||
|
defaultDialerErr error
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
var err error
|
||||||
|
defaultDialer, err = NewDialer(Config{
|
||||||
|
Balancer: BalancerTypeRoundRobin,
|
||||||
|
Subnets: []string{"0.0.0.0/0", "::/0"},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
defaultDialerErr = fmt.Errorf("failed to initialize default dialier: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dial dials provided network and address using default dialer.
|
||||||
|
func Dial(network, address string) (net.Conn, error) {
|
||||||
|
if defaultDialerErr != nil {
|
||||||
|
return nil, defaultDialerErr
|
||||||
|
}
|
||||||
|
return defaultDialer.DialContext(context.Background(), network, address)
|
||||||
|
}
|
29
default_test.go
Normal file
29
default_test.go
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
//go:build integration
|
||||||
|
|
||||||
|
package multinet
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestDefaultDialer(t *testing.T) {
|
||||||
|
srv := startHTTP(t)
|
||||||
|
defer require.NoError(t, srv.Close())
|
||||||
|
|
||||||
|
conn, err := Dial("tcp", "localhost:8080")
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NoError(t, conn.Close())
|
||||||
|
}
|
||||||
|
|
||||||
|
func startHTTP(t *testing.T) *http.Server {
|
||||||
|
srv := &http.Server{Addr: ":8080"}
|
||||||
|
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Test stub") })
|
||||||
|
go func() {
|
||||||
|
require.ErrorIs(t, srv.ListenAndServe(), http.ErrServerClosed)
|
||||||
|
}()
|
||||||
|
return srv
|
||||||
|
}
|
Loading…
Reference in a new issue