forked from TrueCloudLab/rclone
httplib: add Close() method to shut the server down and use it in tests
This commit is contained in:
parent
d8f78a7266
commit
334bf49d30
5 changed files with 32 additions and 9 deletions
|
@ -21,7 +21,10 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
var updateGolden = flag.Bool("updategolden", false, "update golden files for regression test")
|
var (
|
||||||
|
updateGolden = flag.Bool("updategolden", false, "update golden files for regression test")
|
||||||
|
httpServer *server
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
testBindAddress = "localhost:51777"
|
testBindAddress = "localhost:51777"
|
||||||
|
@ -31,8 +34,8 @@ const (
|
||||||
func startServer(t *testing.T, f fs.Fs) {
|
func startServer(t *testing.T, f fs.Fs) {
|
||||||
opt := httplib.DefaultOpt
|
opt := httplib.DefaultOpt
|
||||||
opt.ListenAddr = testBindAddress
|
opt.ListenAddr = testBindAddress
|
||||||
s := newServer(f, &opt)
|
httpServer = newServer(f, &opt)
|
||||||
go s.serve()
|
go httpServer.serve()
|
||||||
|
|
||||||
// try to connect to the test server
|
// try to connect to the test server
|
||||||
pause := time.Millisecond
|
pause := time.Millisecond
|
||||||
|
@ -228,3 +231,7 @@ func TestAddEntry(t *testing.T) {
|
||||||
{remote: "\"quotes\".txt", URL: "%22quotes%22.txt", Leaf: "\"quotes\".txt"},
|
{remote: "\"quotes\".txt", URL: "%22quotes%22.txt", Leaf: "\"quotes\".txt"},
|
||||||
}, es)
|
}, es)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFinalise(t *testing.T) {
|
||||||
|
httpServer.srv.Close()
|
||||||
|
}
|
||||||
|
|
|
@ -14,3 +14,8 @@ func initServer(s *http.Server) {
|
||||||
s.ReadHeaderTimeout = 10 * time.Second // time to send the headers
|
s.ReadHeaderTimeout = 10 * time.Second // time to send the headers
|
||||||
s.IdleTimeout = 60 * time.Second // time to keep idle connections open
|
s.IdleTimeout = 60 * time.Second // time to keep idle connections open
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// closeServer closes the server in a non graceful way
|
||||||
|
func closeServer(s *http.Server) error {
|
||||||
|
return s.Close()
|
||||||
|
}
|
||||||
|
|
|
@ -11,3 +11,8 @@ import (
|
||||||
// Initialise the http.Server for pre go1.8
|
// Initialise the http.Server for pre go1.8
|
||||||
func initServer(s *http.Server) {
|
func initServer(s *http.Server) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// closeServer closes the server in a non graceful way
|
||||||
|
func closeServer(s *http.Server) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -183,7 +183,15 @@ func (s *Server) Serve() {
|
||||||
} else {
|
} else {
|
||||||
err = s.httpServer.ListenAndServe()
|
err = s.httpServer.ListenAndServe()
|
||||||
}
|
}
|
||||||
log.Fatalf("Fatal error while serving HTTP: %v", err)
|
log.Printf("Error while serving HTTP: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close shuts the running server down
|
||||||
|
func (s *Server) Close() {
|
||||||
|
err := closeServer(s.httpServer)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error on closing HTTP server: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// URL returns the serving address of this server
|
// URL returns the serving address of this server
|
||||||
|
|
|
@ -39,11 +39,9 @@ func TestWebDav(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Start the server
|
// Start the server
|
||||||
go func() {
|
w := newWebDAV(fremote, &opt)
|
||||||
w := newWebDAV(fremote, &opt)
|
go w.serve()
|
||||||
w.serve()
|
defer w.srv.Close()
|
||||||
}()
|
|
||||||
// FIXME shut it down somehow?
|
|
||||||
|
|
||||||
// Change directory to run the tests
|
// Change directory to run the tests
|
||||||
err = os.Chdir("../../../backend/webdav")
|
err = os.Chdir("../../../backend/webdav")
|
||||||
|
|
Loading…
Reference in a new issue