add Close method to the Admin server

pull/144/head
John Shahid 2013-12-11 15:40:00 -05:00
parent bc8b3b94e0
commit dba91dce89
3 changed files with 21 additions and 7 deletions

View File

@ -1,13 +1,16 @@
package admin
import (
"net"
"net/http"
"strings"
)
type HttpServer struct {
homeDir string
port string
homeDir string
port string
listener net.Listener
closed bool
}
/*
@ -19,8 +22,22 @@ func NewHttpServer(homeDir, port string) *HttpServer {
}
func (self *HttpServer) ListenAndServe() {
err := http.ListenAndServe(self.port, http.FileServer(http.Dir(self.homeDir)))
var err error
self.listener, err = net.Listen("tcp", self.port)
if err != nil {
panic(err)
}
err = http.Serve(self.listener, http.FileServer(http.Dir(self.homeDir)))
if !strings.Contains(err.Error(), "closed") {
panic(err)
}
}
func (self *HttpServer) Close() {
if self.closed {
return
}
self.closed = true
self.listener.Close()
}

View File

@ -86,6 +86,7 @@ func (self *Server) Stop() {
self.Db.Close()
self.HttpApi.Close()
self.ProtobufServer.Close()
self.AdminServer.Close()
// TODO: close admin server and protobuf client connections
log.Info("Stopping server")
}

View File

@ -363,8 +363,6 @@ func (self *ServerSuite) TestFailureAndReplicationReplays(c *C) {
servers[1].Stop()
time.Sleep(time.Second)
// TODO: make the admin server actually close so we don't have to go to a new port
killedConfig.AdminHttpPort = 8111
data = `
[{
@ -478,8 +476,6 @@ func (self *ServerSuite) TestFailureAndDeleteReplays(c *C) {
servers[1].Stop()
time.Sleep(time.Second)
// TODO: make the admin server actually close so we don't have to go to a new port
killedConfig.AdminHttpPort = 8110
escapedQuery := url.QueryEscape("delete from test_failure_replays")
resp, err = http.Get(fmt.Sprintf("http://localhost:%d/db/full_del_rep/series?u=paul&p=pass&q=%s", servers[0].Config.ApiHttpPort, escapedQuery))