78 lines
1.6 KiB
Go
78 lines
1.6 KiB
Go
package connection
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/cloudflare/cloudflared/cmd/cloudflared/buildinfo"
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/cloudflare/cloudflared/h2mux"
|
|
"github.com/cloudflare/cloudflared/tunnelrpc/pogs"
|
|
"github.com/google/uuid"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var (
|
|
configurable = &EdgeManagerConfigurable{
|
|
[]h2mux.TunnelHostname{
|
|
"http.example.com",
|
|
"ws.example.com",
|
|
"hello.example.com",
|
|
},
|
|
&pogs.EdgeConnectionConfig{
|
|
NumHAConnections: 1,
|
|
HeartbeatInterval: 1 * time.Second,
|
|
Timeout: 5 * time.Second,
|
|
MaxFailedHeartbeats: 3,
|
|
UserCredentialPath: "/etc/cloudflared/cert.pem",
|
|
},
|
|
}
|
|
cloudflaredConfig = &CloudflaredConfig{
|
|
CloudflaredID: uuid.New(),
|
|
Tags: []pogs.Tag{
|
|
{Name: "pool", Value: "east-6"},
|
|
},
|
|
BuildInfo: &buildinfo.BuildInfo{
|
|
GoOS: "linux",
|
|
GoVersion: "1.12",
|
|
GoArch: "amd64",
|
|
CloudflaredVersion: "2019.6.0",
|
|
},
|
|
}
|
|
)
|
|
|
|
type mockStreamHandler struct {
|
|
}
|
|
|
|
func (msh *mockStreamHandler) ServeStream(*h2mux.MuxedStream) error {
|
|
return nil
|
|
}
|
|
|
|
func mockEdgeManager() *EdgeManager {
|
|
return NewEdgeManager(
|
|
&mockStreamHandler{},
|
|
configurable,
|
|
[]byte{},
|
|
nil,
|
|
&mockEdgeServiceDiscoverer{},
|
|
cloudflaredConfig,
|
|
logrus.New(),
|
|
)
|
|
}
|
|
|
|
func TestUpdateConfigurable(t *testing.T) {
|
|
m := mockEdgeManager()
|
|
newConfigurable := &EdgeManagerConfigurable{
|
|
[]h2mux.TunnelHostname{
|
|
"second.example.com",
|
|
},
|
|
&pogs.EdgeConnectionConfig{
|
|
NumHAConnections: 2,
|
|
},
|
|
}
|
|
m.UpdateConfigurable(newConfigurable)
|
|
|
|
assert.Equal(t, newConfigurable, m.state.getConfigurable())
|
|
}
|