mirror of
https://github.com/caddyserver/caddy.git
synced 2024-11-29 20:24:11 +08:00
Merge branch 'master' into fastcgi-timeout-defaults
This commit is contained in:
commit
32fa0ce6a0
4
caddy.go
4
caddy.go
|
@ -232,7 +232,7 @@ func HasListenerWithAddress(addr string) bool {
|
||||||
func listenerAddrEqual(ln net.Listener, addr string) bool {
|
func listenerAddrEqual(ln net.Listener, addr string) bool {
|
||||||
lnAddr := ln.Addr().String()
|
lnAddr := ln.Addr().String()
|
||||||
hostname, port, err := net.SplitHostPort(addr)
|
hostname, port, err := net.SplitHostPort(addr)
|
||||||
if err != nil || hostname != "" {
|
if err != nil {
|
||||||
return lnAddr == addr
|
return lnAddr == addr
|
||||||
}
|
}
|
||||||
if lnAddr == net.JoinHostPort("::", port) {
|
if lnAddr == net.JoinHostPort("::", port) {
|
||||||
|
@ -241,7 +241,7 @@ func listenerAddrEqual(ln net.Listener, addr string) bool {
|
||||||
if lnAddr == net.JoinHostPort("0.0.0.0", port) {
|
if lnAddr == net.JoinHostPort("0.0.0.0", port) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return false
|
return hostname != "" && lnAddr == addr
|
||||||
}
|
}
|
||||||
|
|
||||||
// TCPServer is a type that can listen and serve connections.
|
// TCPServer is a type that can listen and serve connections.
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
package caddy
|
package caddy
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"net"
|
||||||
|
"strconv"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// TODO
|
// TODO
|
||||||
|
@ -56,3 +60,41 @@ func TestIsLoopback(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestListenerAddrEqual(t *testing.T) {
|
||||||
|
ln1, err := net.Listen("tcp", "[::]:0")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer ln1.Close()
|
||||||
|
|
||||||
|
ln1port := strconv.Itoa(ln1.Addr().(*net.TCPAddr).Port)
|
||||||
|
|
||||||
|
ln2, err := net.Listen("tcp", "127.0.0.1:0")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer ln2.Close()
|
||||||
|
|
||||||
|
ln2port := strconv.Itoa(ln2.Addr().(*net.TCPAddr).Port)
|
||||||
|
|
||||||
|
for i, test := range []struct {
|
||||||
|
ln net.Listener
|
||||||
|
addr string
|
||||||
|
expect bool
|
||||||
|
}{
|
||||||
|
{ln1, ":1234", false},
|
||||||
|
{ln1, "0.0.0.0:1234", false},
|
||||||
|
{ln1, "0.0.0.0", false},
|
||||||
|
{ln1, ":" + ln1port + "", true},
|
||||||
|
{ln1, "0.0.0.0:" + ln1port + "", true},
|
||||||
|
{ln2, ":" + ln2port + "", false},
|
||||||
|
{ln2, "127.0.0.1:1234", false},
|
||||||
|
{ln2, "127.0.0.1", false},
|
||||||
|
{ln2, "127.0.0.1:" + ln2port + "", true},
|
||||||
|
} {
|
||||||
|
if got, want := listenerAddrEqual(test.ln, test.addr), test.expect; got != want {
|
||||||
|
t.Errorf("Test %d (%s == %s): expected %v but was %v", i, test.addr, test.ln.Addr().String(), want, got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -746,14 +746,16 @@ func TestFiles(t *testing.T) {
|
||||||
|
|
||||||
// Create directory / files from test case.
|
// Create directory / files from test case.
|
||||||
if test.fileNames != nil {
|
if test.fileNames != nil {
|
||||||
dirPath, err = ioutil.TempDir(fmt.Sprintf("%s", context.Root), "caddy_test")
|
dirPath, err = ioutil.TempDir(fmt.Sprintf("%s", context.Root), "caddy_ctxtest")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
os.RemoveAll(dirPath)
|
||||||
t.Fatalf(testPrefix+"Expected no error creating directory, got: '%s'", err.Error())
|
t.Fatalf(testPrefix+"Expected no error creating directory, got: '%s'", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, name := range test.fileNames {
|
for _, name := range test.fileNames {
|
||||||
absFilePath := filepath.Join(dirPath, name)
|
absFilePath := filepath.Join(dirPath, name)
|
||||||
if err = ioutil.WriteFile(absFilePath, []byte(""), os.ModePerm); err != nil {
|
if err = ioutil.WriteFile(absFilePath, []byte(""), os.ModePerm); err != nil {
|
||||||
|
os.RemoveAll(dirPath)
|
||||||
t.Fatalf(testPrefix+"Expected no error creating file, got: '%s'", err.Error())
|
t.Fatalf(testPrefix+"Expected no error creating file, got: '%s'", err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,10 +229,11 @@ func TestUnixSocketProxy(t *testing.T) {
|
||||||
}))
|
}))
|
||||||
|
|
||||||
// Get absolute path for unix: socket
|
// Get absolute path for unix: socket
|
||||||
dir, err := ioutil.TempDir("", "caddy_test")
|
dir, err := ioutil.TempDir("", "caddy_proxytest")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to make temp dir to contain unix socket. %v", err)
|
t.Fatalf("Failed to make temp dir to contain unix socket. %v", err)
|
||||||
}
|
}
|
||||||
|
defer os.RemoveAll(dir)
|
||||||
socketPath := filepath.Join(dir, "test_socket")
|
socketPath := filepath.Join(dir, "test_socket")
|
||||||
|
|
||||||
// Change httptest.Server listener to listen to unix: socket
|
// Change httptest.Server listener to listen to unix: socket
|
||||||
|
@ -283,20 +284,21 @@ func GetHTTPProxy(messageFormat string, prefix string) (*Proxy, *httptest.Server
|
||||||
return newPrefixedWebSocketTestProxy(ts.URL, prefix), ts
|
return newPrefixedWebSocketTestProxy(ts.URL, prefix), ts
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSocketProxy(messageFormat string, prefix string) (*Proxy, *httptest.Server, error) {
|
func GetSocketProxy(messageFormat string, prefix string) (*Proxy, *httptest.Server, string, error) {
|
||||||
ts := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
ts := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
fmt.Fprintf(w, messageFormat, r.URL.String())
|
fmt.Fprintf(w, messageFormat, r.URL.String())
|
||||||
}))
|
}))
|
||||||
|
|
||||||
dir, err := ioutil.TempDir("", "caddy_test")
|
dir, err := ioutil.TempDir("", "caddy_proxytest")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("Failed to make temp dir to contain unix socket. %v", err)
|
return nil, nil, dir, fmt.Errorf("Failed to make temp dir to contain unix socket. %v", err)
|
||||||
}
|
}
|
||||||
socketPath := filepath.Join(dir, "test_socket")
|
socketPath := filepath.Join(dir, "test_socket")
|
||||||
|
|
||||||
ln, err := net.Listen("unix", socketPath)
|
ln, err := net.Listen("unix", socketPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("Unable to listen: %v", err)
|
os.RemoveAll(dir)
|
||||||
|
return nil, nil, dir, fmt.Errorf("Unable to listen: %v", err)
|
||||||
}
|
}
|
||||||
ts.Listener = ln
|
ts.Listener = ln
|
||||||
|
|
||||||
|
@ -304,7 +306,7 @@ func GetSocketProxy(messageFormat string, prefix string) (*Proxy, *httptest.Serv
|
||||||
|
|
||||||
tsURL := strings.Replace(ts.URL, "http://", "unix:", 1)
|
tsURL := strings.Replace(ts.URL, "http://", "unix:", 1)
|
||||||
|
|
||||||
return newPrefixedWebSocketTestProxy(tsURL, prefix), ts, nil
|
return newPrefixedWebSocketTestProxy(tsURL, prefix), ts, dir, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetTestServerMessage(p *Proxy, ts *httptest.Server, path string) (string, error) {
|
func GetTestServerMessage(p *Proxy, ts *httptest.Server, path string) (string, error) {
|
||||||
|
@ -370,8 +372,7 @@ func TestUnixSocketProxyPaths(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
p, ts, err := GetSocketProxy(greeting, test.prefix)
|
p, ts, tmpdir, err := GetSocketProxy(greeting, test.prefix)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Getting socket proxy failed - %v", err)
|
t.Fatalf("Getting socket proxy failed - %v", err)
|
||||||
}
|
}
|
||||||
|
@ -379,12 +380,15 @@ func TestUnixSocketProxyPaths(t *testing.T) {
|
||||||
actualMsg, err := GetTestServerMessage(p, ts, test.url)
|
actualMsg, err := GetTestServerMessage(p, ts, test.url)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
os.RemoveAll(tmpdir)
|
||||||
t.Fatalf("Getting server message failed - %v", err)
|
t.Fatalf("Getting server message failed - %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if actualMsg != test.expected {
|
if actualMsg != test.expected {
|
||||||
t.Errorf("Expected '%s' but got '%s' instead", test.expected, actualMsg)
|
t.Errorf("Expected '%s' but got '%s' instead", test.expected, actualMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
os.RemoveAll(tmpdir)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -166,12 +166,12 @@ func TestGetEmail(t *testing.T) {
|
||||||
t.Fatalf("Error saving user %d: %v", i, err)
|
t.Fatalf("Error saving user %d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Change modified time so they're all different, so the test becomes deterministic
|
// Change modified time so they're all different and the test becomes more deterministic
|
||||||
f, err := os.Stat(testStorage.user(eml))
|
f, err := os.Stat(testStorage.user(eml))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Could not access user folder for '%s': %v", eml, err)
|
t.Fatalf("Could not access user folder for '%s': %v", eml, err)
|
||||||
}
|
}
|
||||||
chTime := f.ModTime().Add(-(time.Duration(i) * time.Second))
|
chTime := f.ModTime().Add(-(time.Duration(i) * time.Hour)) // 1 second isn't always enough space!
|
||||||
if err := os.Chtimes(testStorage.user(eml), chTime, chTime); err != nil {
|
if err := os.Chtimes(testStorage.user(eml), chTime, chTime); err != nil {
|
||||||
t.Fatalf("Could not change user folder mod time for '%s': %v", eml, err)
|
t.Fatalf("Could not change user folder mod time for '%s': %v", eml, err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user