1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
2.2 KiB
Go

package cluster
import (
"fmt"
"net"
"os"
"testing"
"github.com/rqlite/rqlite/tcp"
"github.com/rqlite/rqlite/testdata/x509"
)
func Test_NewServiceSetGetNodeAPIAddrMuxed(t *testing.T) {
ln, mux := mustNewMux()
go mux.Serve()
tn := mux.Listen(1) // Could be any byte value.
s := New(tn)
if s == nil {
t.Fatalf("failed to create cluster service")
}
if err := s.Open(); err != nil {
t.Fatalf("failed to open cluster service")
}
s.SetAPIAddr("foo")
addr, err := s.GetNodeAPIAddr(s.Addr())
if err != nil {
t.Fatalf("failed to get node API address: %s", err)
}
if addr != "http://foo" {
t.Fatalf("failed to get correct node API address")
}
if err := ln.Close(); err != nil {
t.Fatalf("failed to close Mux's listener: %s", err)
}
if err := s.Close(); err != nil {
t.Fatalf("failed to close cluster service")
}
}
func Test_NewServiceSetGetNodeAPIAddrMuxedTLS(t *testing.T) {
ln, mux := mustNewTLSMux()
go mux.Serve()
tn := mux.Listen(1) // Could be any byte value.
s := New(tn)
if s == nil {
t.Fatalf("failed to create cluster service")
}
if err := s.Open(); err != nil {
t.Fatalf("failed to open cluster service")
}
s.SetAPIAddr("foo")
addr, err := s.GetNodeAPIAddr(s.Addr())
if err != nil {
t.Fatalf("failed to get node API address: %s", err)
}
if addr != "http://foo" {
t.Fatalf("failed to get correct node API address")
}
if err := ln.Close(); err != nil {
t.Fatalf("failed to close Mux's listener: %s", err)
}
if err := s.Close(); err != nil {
t.Fatalf("failed to close cluster service")
}
}
func mustNewMux() (net.Listener, *tcp.Mux) {
ln, err := net.Listen("tcp", "localhost:0")
if err != nil {
panic("failed to create mock listener")
}
mux, err := tcp.NewMux(ln, nil)
if err != nil {
panic(fmt.Sprintf("failed to create mux: %s", err))
}
return ln, mux
}
func mustNewTLSMux() (net.Listener, *tcp.Mux) {
ln, err := net.Listen("tcp", "localhost:0")
if err != nil {
panic("failed to create mock listener")
}
cert := x509.CertFile("")
defer os.Remove(cert)
key := x509.KeyFile("")
defer os.Remove(key)
mux, err := tcp.NewTLSMux(ln, nil, cert, key, "")
if err != nil {
panic(fmt.Sprintf("failed to create TLS mux: %s", err))
}
mux.InsecureSkipVerify = true
return ln, mux
}