From 5c89b300d71728a829fe1f92100743503042a521 Mon Sep 17 00:00:00 2001 From: Matt Fellows Date: Mon, 20 Feb 2017 08:59:49 +1100 Subject: [PATCH] feat(daemon): allow user to specify network listen details for daemon --- command/daemon.go | 8 ++++++-- command/daemon_test.go | 1 + daemon/daemon.go | 6 +++--- daemon/daemon_test.go | 16 ++++++++-------- dsl/client_test.go | 2 +- 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/command/daemon.go b/command/daemon.go index a453f192f..18cacc563 100644 --- a/command/daemon.go +++ b/command/daemon.go @@ -6,6 +6,8 @@ import ( ) var port int +var network string +var address string var daemonCmdInstance *daemon.Daemon var daemonCmd = &cobra.Command{ Use: "daemon", @@ -19,11 +21,13 @@ var daemonCmd = &cobra.Command{ verifier := &daemon.VerificationService{} verifier.Setup() daemonCmdInstance = daemon.NewDaemon(mock, verifier) - daemonCmdInstance.StartDaemon(port) + daemonCmdInstance.StartDaemon(port, network, address) }, } func init() { - daemonCmd.Flags().IntVarP(&port, "port", "p", 6666, "Local daemon port") + daemonCmd.Flags().IntVarP(&port, "port", "p", 6666, "Local daemon port to listen on") + daemonCmd.Flags().StringVarP(&network, "network", "n", "", "Local network interface to listen on ('tcp', 'tcp4', 'tcp6')") + daemonCmd.Flags().StringVarP(&address, "address", "a", "", "Local network address to listen on (e.g. '', '127.0.0.1', '[::1]' etc.)") RootCmd.AddCommand(daemonCmd) } diff --git a/command/daemon_test.go b/command/daemon_test.go index bedfcb7d0..66cc7b471 100644 --- a/command/daemon_test.go +++ b/command/daemon_test.go @@ -30,6 +30,7 @@ func TestDaemonCommand(t *testing.T) { args := []string{"daemon"} p, _ := utils.GetFreePort() port = p + network = "tcp" go daemonCmd.Run(nil, args) waitForPortInTest(port, t) diff --git a/daemon/daemon.go b/daemon/daemon.go index b6cd066ea..75eedbb17 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -46,8 +46,8 @@ func NewDaemon(MockServiceManager Service, verificationServiceManager Service) * } // StartDaemon starts the daemon RPC server. -func (d Daemon) StartDaemon(port int) { - log.Println("[INFO] daemon - starting daemon on port", port) +func (d Daemon) StartDaemon(port int, network string, address string) { + log.Println("[INFO] daemon - starting daemon on network:", network, "address:", address, "port:", port) serv := rpc.NewServer() serv.Register(d) @@ -62,7 +62,7 @@ func (d Daemon) StartDaemon(port int) { // Workaround for multiple RPC ServeMux's http.DefaultServeMux = oldMux - l, err := net.Listen("tcp", fmt.Sprintf(":%d", port)) + l, err := net.Listen(network, fmt.Sprintf("%s:%d", address, port)) if err != nil { panic(err) } diff --git a/daemon/daemon_test.go b/daemon/daemon_test.go index 0a10d6f3f..ed8b715d2 100644 --- a/daemon/daemon_test.go +++ b/daemon/daemon_test.go @@ -67,7 +67,7 @@ func TestNewDaemon(t *testing.T) { func TestStopDaemon(t *testing.T) { d, _ := createMockedDaemon(true) port, _ := utils.GetFreePort() - go d.StartDaemon(port) + go d.StartDaemon(port, "tcp", "") connectToDaemon(port, t) var res string d.StopDaemon("", &res) @@ -77,7 +77,7 @@ func TestStopDaemon(t *testing.T) { func TestShutdownDaemon(t *testing.T) { d, _ := createMockedDaemon(true) port, _ := utils.GetFreePort() - go d.StartDaemon(port) + go d.StartDaemon(port, "tcp", "") connectToDaemon(port, t) d.Shutdown() } @@ -129,7 +129,7 @@ func TestStartAndStopDaemon(t *testing.T) { port, _ := utils.GetFreePort() daemon, _ := createMockedDaemon(true) defer waitForDaemonToShutdown(port, daemon, t) - go daemon.StartDaemon(port) + go daemon.StartDaemon(port, "tcp", "") connectToDaemon(port, t) } @@ -339,7 +339,7 @@ func TestRPCClient_List(t *testing.T) { daemon, _ := createMockedDaemon(true) port, _ := utils.GetFreePort() defer waitForDaemonToShutdown(port, daemon, t) - go daemon.StartDaemon(port) + go daemon.StartDaemon(port, "tcp", "") connectToDaemon(port, t) client, err := rpc.DialHTTP("tcp", fmt.Sprintf(":%d", port)) @@ -358,7 +358,7 @@ func TestRPCClient_StartServer(t *testing.T) { daemon, _ := createMockedDaemon(true) port, _ := utils.GetFreePort() defer waitForDaemonToShutdown(port, daemon, t) - go daemon.StartDaemon(port) + go daemon.StartDaemon(port, "tcp", "") connectToDaemon(port, t) client, err := rpc.DialHTTP("tcp", fmt.Sprintf(":%d", port)) @@ -381,7 +381,7 @@ func TestRPCClient_StopServer(t *testing.T) { daemon, manager := createMockedDaemon(true) port, _ := utils.GetFreePort() defer waitForDaemonToShutdown(port, daemon, t) - go daemon.StartDaemon(port) + go daemon.StartDaemon(port, "tcp", "") connectToDaemon(port, t) var cmd *exec.Cmd @@ -412,7 +412,7 @@ func TestRPCClient_StopDaemon(t *testing.T) { daemon, _ := createMockedDaemon(true) port, _ := utils.GetFreePort() defer waitForDaemonToShutdown(port, daemon, t) - go daemon.StartDaemon(port) + go daemon.StartDaemon(port, "tcp", "") connectToDaemon(port, t) client, err := rpc.DialHTTP("tcp", fmt.Sprintf(":%d", port)) @@ -429,7 +429,7 @@ func TestRPCClient_Verify(t *testing.T) { daemon, _ := createMockedDaemon(true) port, _ := utils.GetFreePort() defer waitForDaemonToShutdown(port, daemon, t) - go daemon.StartDaemon(port) + go daemon.StartDaemon(port, "tcp", "") connectToDaemon(port, t) client, err := rpc.DialHTTP("tcp", fmt.Sprintf(":%d", port)) diff --git a/dsl/client_test.go b/dsl/client_test.go index 708b72507..8b7c1a760 100644 --- a/dsl/client_test.go +++ b/dsl/client_test.go @@ -109,7 +109,7 @@ func createDaemon(port int, success bool) (*daemon.Daemon, *daemon.ServiceMock) }() d := daemon.NewDaemon(svc, svc) - go d.StartDaemon(port) + go d.StartDaemon(port, "tcp", "") return d, svc }