aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-12-31 14:23:44 +0100
committerMartin Polden <mpolden@mpolden.no>2019-12-31 14:44:56 +0100
commitc6e8a378544c055721ead3557c1de21bf30e4ab3 (patch)
tree63ba77d2473b8b35feb8362b0559d8966860e31b
parentc6c2feb5a78496e1dcdb0532dca1186b1e919a38 (diff)
Simplify
-rw-r--r--cmd/zdns/main.go28
-rw-r--r--cmd/zdns/main_test.go22
2 files changed, 16 insertions, 34 deletions
diff --git a/cmd/zdns/main.go b/cmd/zdns/main.go
index cd01e9c..d116fff 100644
--- a/cmd/zdns/main.go
+++ b/cmd/zdns/main.go
@@ -28,7 +28,6 @@ type server interface{ ListenAndServe() error }
type cli struct {
servers []server
- started int
wg sync.WaitGroup
}
@@ -59,18 +58,17 @@ func (c *cli) runServer(server server) {
fatal(err)
}
}()
- c.started++
}
-func newCli(out io.Writer, args []string, configFile string, sig chan os.Signal) *cli {
- f := flag.CommandLine
- f.SetOutput(out)
- confFile := f.String("f", configFile, "config file `path`")
- help := f.Bool("h", false, "print usage")
- f.Parse(args)
+func newCli(out io.Writer, args []string, configFile string, sig chan os.Signal) (*cli, error) {
+ cl := flag.CommandLine
+ cl.SetOutput(out)
+ confFile := cl.String("f", configFile, "config file `path`")
+ help := cl.Bool("h", false, "print usage")
+ cl.Parse(args)
if *help {
- f.Usage()
- return nil
+ cl.Usage()
+ return nil, fmt.Errorf("usage option given")
}
// Config
@@ -116,19 +114,19 @@ func newCli(out io.Writer, args []string, configFile string, sig chan os.Signal)
sigHandler.OnClose(httpSrv)
servers = append(servers, httpSrv)
}
- return &cli{servers: servers}
+ return &cli{servers: servers}, nil
}
func (c *cli) run() {
- for _, srv := range c.servers {
- c.runServer(srv)
+ for _, s := range c.servers {
+ c.runServer(s)
}
c.wg.Wait()
}
func main() {
- c := newCli(os.Stderr, os.Args[1:], defaultConfigFile(), make(chan os.Signal, 1))
- if c != nil {
+ c, err := newCli(os.Stderr, os.Args[1:], defaultConfigFile(), make(chan os.Signal, 1))
+ if err == nil {
c.run()
}
}
diff --git a/cmd/zdns/main_test.go b/cmd/zdns/main_test.go
index 647e8cf..da0bfcb 100644
--- a/cmd/zdns/main_test.go
+++ b/cmd/zdns/main_test.go
@@ -3,10 +3,7 @@ package main
import (
"io/ioutil"
"os"
- "sync"
- "syscall"
"testing"
- "time"
)
func tempFile(t *testing.T, s string) (string, error) {
@@ -40,21 +37,8 @@ hijack_mode = "zero"
}
defer os.Remove(f)
- sig := make(chan os.Signal, 1)
- c := newCli(os.Stderr, []string{"-f", f}, f, sig)
- var wg sync.WaitGroup
- wg.Add(1)
- go func() {
- defer wg.Done()
- c.run()
- }()
- ts := time.Now()
- for c.started < 2 {
- time.Sleep(10 * time.Millisecond) // Wait for servers to start
- if time.Since(ts) > 2*time.Second {
- t.Fatal("timed out waiting for servers to start")
- }
+ _, err = newCli(ioutil.Discard, []string{"-f", f}, f, make(chan os.Signal, 1))
+ if err != nil {
+ t.Fatal(err)
}
- sig <- syscall.SIGTERM
- wg.Wait()
}