mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-09-21 05:24:43 -04:00
extract shared grpcutil dialer from pubapi
Signed-off-by: Malte Poll <mp@edgeless.systems>
This commit is contained in:
parent
5ac72c730d
commit
77b0237dd5
17 changed files with 275 additions and 152 deletions
|
@ -16,14 +16,14 @@ import (
|
|||
|
||||
// Download downloads a coordinator from a given debugd instance.
|
||||
type Download struct {
|
||||
dialer Dialer
|
||||
dialer NetDialer
|
||||
writer streamToFileWriter
|
||||
serviceManager serviceManager
|
||||
attemptedDownloads map[string]time.Time
|
||||
}
|
||||
|
||||
// New creates a new Download.
|
||||
func New(dialer Dialer, serviceManager serviceManager, writer streamToFileWriter) *Download {
|
||||
func New(dialer NetDialer, serviceManager serviceManager, writer streamToFileWriter) *Download {
|
||||
return &Download{
|
||||
dialer: dialer,
|
||||
writer: writer,
|
||||
|
@ -91,6 +91,7 @@ type streamToFileWriter interface {
|
|||
WriteStream(filename string, stream coordinator.ReadChunkStream, showProgress bool) error
|
||||
}
|
||||
|
||||
type Dialer interface {
|
||||
// NetDialer can open a net.Conn.
|
||||
type NetDialer interface {
|
||||
DialContext(ctx context.Context, network, address string) (net.Conn, error)
|
||||
}
|
||||
|
|
|
@ -9,10 +9,10 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/edgelesssys/constellation/coordinator/util/testdialer"
|
||||
"github.com/edgelesssys/constellation/debugd/coordinator"
|
||||
"github.com/edgelesssys/constellation/debugd/debugd"
|
||||
pb "github.com/edgelesssys/constellation/debugd/service"
|
||||
"github.com/edgelesssys/constellation/debugd/service/testdialer"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/protobuf/proto"
|
||||
|
|
|
@ -8,10 +8,10 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
"github.com/edgelesssys/constellation/coordinator/util/testdialer"
|
||||
"github.com/edgelesssys/constellation/debugd/coordinator"
|
||||
"github.com/edgelesssys/constellation/debugd/debugd/deploy"
|
||||
pb "github.com/edgelesssys/constellation/debugd/service"
|
||||
"github.com/edgelesssys/constellation/debugd/service/testdialer"
|
||||
"github.com/edgelesssys/constellation/debugd/ssh"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
@ -351,11 +351,11 @@ func (s *stubServiceManager) WriteSystemdUnitFile(ctx context.Context, unit depl
|
|||
return s.writeSystemdUnitFileErr
|
||||
}
|
||||
|
||||
type dialer interface {
|
||||
type netDialer interface {
|
||||
DialContext(ctx context.Context, network, address string) (net.Conn, error)
|
||||
}
|
||||
|
||||
func dial(ctx context.Context, dialer dialer, target string) (*grpc.ClientConn, error) {
|
||||
func dial(ctx context.Context, dialer netDialer, target string) (*grpc.ClientConn, error) {
|
||||
return grpc.DialContext(ctx, target,
|
||||
grpc.WithContextDialer(func(ctx context.Context, addr string) (net.Conn, error) {
|
||||
return dialer.DialContext(ctx, "tcp", addr)
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
package testdialer
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"sync"
|
||||
|
||||
"google.golang.org/grpc/test/bufconn"
|
||||
)
|
||||
|
||||
// BufconnDialer is a fake dialer based on gRPC bufconn package.
|
||||
type BufconnDialer struct {
|
||||
mut sync.Mutex
|
||||
listeners map[string]*bufconn.Listener
|
||||
}
|
||||
|
||||
// NewBufconnDialer creates a new bufconn dialer for testing.
|
||||
func NewBufconnDialer() *BufconnDialer {
|
||||
return &BufconnDialer{listeners: make(map[string]*bufconn.Listener)}
|
||||
}
|
||||
|
||||
// DialContext implements the Dialer interface.
|
||||
func (b *BufconnDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
|
||||
b.mut.Lock()
|
||||
listener, ok := b.listeners[address]
|
||||
b.mut.Unlock()
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("could not connect to server on %v", address)
|
||||
}
|
||||
return listener.DialContext(ctx)
|
||||
}
|
||||
|
||||
// GetListener returns a fake listener that is coupled with this dialer.
|
||||
func (b *BufconnDialer) GetListener(endpoint string) net.Listener {
|
||||
listener := bufconn.Listen(1024)
|
||||
b.mut.Lock()
|
||||
b.listeners[endpoint] = listener
|
||||
b.mut.Unlock()
|
||||
return listener
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue