mirror of https://github.com/hashicorp/consul
agent: fixing up tests
parent
bf48651c58
commit
4c3ec248a5
|
@ -139,7 +139,6 @@ func makeClientWithConfig(t *testing.T, cb1 configCallback, cb2 serverConfigCall
|
||||||
// Make client config
|
// Make client config
|
||||||
conf := DefaultConfig()
|
conf := DefaultConfig()
|
||||||
cb1(conf)
|
cb1(conf)
|
||||||
fmt.Printf("%#v\n", conf.HttpClient.Transport)
|
|
||||||
|
|
||||||
// Create client
|
// Create client
|
||||||
client, err := NewClient(conf)
|
client, err := NewClient(conf)
|
||||||
|
|
|
@ -9,7 +9,6 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
|
@ -6,10 +6,12 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
@ -19,7 +21,15 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func makeHTTPServer(t *testing.T) (string, *HTTPServer) {
|
func makeHTTPServer(t *testing.T) (string, *HTTPServer) {
|
||||||
|
return makeHTTPServerWithConfig(t, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeHTTPServerWithConfig(t *testing.T, cb func(c *Config)) (string, *HTTPServer) {
|
||||||
conf := nextConfig()
|
conf := nextConfig()
|
||||||
|
if cb != nil {
|
||||||
|
cb(conf)
|
||||||
|
}
|
||||||
|
|
||||||
dir, agent := makeAgent(t, conf)
|
dir, agent := makeAgent(t, conf)
|
||||||
uiDir := filepath.Join(dir, "ui")
|
uiDir := filepath.Join(dir, "ui")
|
||||||
if err := os.Mkdir(uiDir, 755); err != nil {
|
if err := os.Mkdir(uiDir, 755); err != nil {
|
||||||
|
@ -43,6 +53,54 @@ func encodeReq(obj interface{}) io.ReadCloser {
|
||||||
return ioutil.NopCloser(buf)
|
return ioutil.NopCloser(buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestHTTPServer_UnixSocket(t *testing.T) {
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
t.SkipNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
tempDir, err := ioutil.TempDir("", "consul")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
defer os.RemoveAll(tempDir)
|
||||||
|
socket := filepath.Join(tempDir, "test.sock")
|
||||||
|
|
||||||
|
dir, srv := makeHTTPServerWithConfig(t, func(c *Config) {
|
||||||
|
c.Addresses.HTTP = "unix://" + socket
|
||||||
|
})
|
||||||
|
defer os.RemoveAll(dir)
|
||||||
|
defer srv.Shutdown()
|
||||||
|
defer srv.agent.Shutdown()
|
||||||
|
|
||||||
|
// Ensure the socket was created
|
||||||
|
if _, err := os.Stat(socket); err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure we can get a response from the socket.
|
||||||
|
path, _ := unixSocketAddr(srv.agent.config.Addresses.HTTP)
|
||||||
|
client := &http.Client{
|
||||||
|
Transport: &http.Transport{
|
||||||
|
Dial: func(_, _ string) (net.Conn, error) {
|
||||||
|
return net.Dial("unix", path)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// This URL doesn't look like it makes sense, but the scheme (http://) and
|
||||||
|
// the host (127.0.0.1) are required by the HTTP client library. In reality
|
||||||
|
// this will just use the custom dialer and talk to the socket.
|
||||||
|
resp, err := client.Get("http://127.0.0.1/v1/agent/self")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
if body, err := ioutil.ReadAll(resp.Body); err != nil || len(body) == 0 {
|
||||||
|
t.Fatalf("bad: %s %v", body, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestSetIndex(t *testing.T) {
|
func TestSetIndex(t *testing.T) {
|
||||||
resp := httptest.NewRecorder()
|
resp := httptest.NewRecorder()
|
||||||
setIndex(resp, 1000)
|
setIndex(resp, 1000)
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -68,6 +69,38 @@ func testRPCClientWithConfig(t *testing.T, cb func(c *Config)) *rpcParts {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRPCClient_UnixSocket(t *testing.T) {
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
t.SkipNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
tempDir, err := ioutil.TempDir("", "consul")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
defer os.RemoveAll(tempDir)
|
||||||
|
socket := filepath.Join(tempDir, "test.sock")
|
||||||
|
|
||||||
|
p1 := testRPCClientWithConfig(t, func(c *Config) {
|
||||||
|
c.Addresses.RPC = "unix://" + socket
|
||||||
|
})
|
||||||
|
defer p1.Close()
|
||||||
|
|
||||||
|
// Ensure the socket was created
|
||||||
|
if _, err := os.Stat(socket); err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure we can talk with the socket
|
||||||
|
mem, err := p1.client.LANMembers()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
if len(mem) != 1 {
|
||||||
|
t.Fatalf("bad: %#v", mem)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestRPCClientForceLeave(t *testing.T) {
|
func TestRPCClientForceLeave(t *testing.T) {
|
||||||
p1 := testRPCClient(t)
|
p1 := testRPCClient(t)
|
||||||
p2 := testRPCClient(t)
|
p2 := testRPCClient(t)
|
||||||
|
@ -215,35 +248,6 @@ func TestRPCClientStats(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRPCClientStatsUnix(t *testing.T) {
|
|
||||||
if runtime.GOOS == "windows" {
|
|
||||||
t.SkipNow()
|
|
||||||
}
|
|
||||||
|
|
||||||
tempdir, err := ioutil.TempDir("", "consul-test-")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("err: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
p1 := testRPCClientWithConfig(t, func(c *Config) {
|
|
||||||
c.Addresses.RPC = fmt.Sprintf("unix://%s/test.sock", tempdir)
|
|
||||||
})
|
|
||||||
defer p1.Close()
|
|
||||||
|
|
||||||
stats, err := p1.client.Stats()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("err: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, ok := stats["agent"]; !ok {
|
|
||||||
t.Fatalf("bad: %#v", stats)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, ok := stats["consul"]; !ok {
|
|
||||||
t.Fatalf("bad: %#v", stats)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRPCClientLeave(t *testing.T) {
|
func TestRPCClientLeave(t *testing.T) {
|
||||||
p1 := testRPCClient(t)
|
p1 := testRPCClient(t)
|
||||||
defer p1.Close()
|
defer p1.Close()
|
||||||
|
|
Loading…
Reference in New Issue