From 05254ad11e158b806a2b67ae5a576c3174c5278a Mon Sep 17 00:00:00 2001 From: Matthew Jaffee Date: Wed, 1 Nov 2017 13:21:06 -0500 Subject: [PATCH] add test helper for starting a new pilosa instance Pilosa runs on ephemeral ports with temporrary storage. --- test/pilosa.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 test/pilosa.go diff --git a/test/pilosa.go b/test/pilosa.go new file mode 100644 index 000000000..cb3f7a07a --- /dev/null +++ b/test/pilosa.go @@ -0,0 +1,48 @@ +package test + +import ( + "bytes" + "io/ioutil" + "net" + "strconv" + "testing" + + "github.com/pilosa/pilosa/server" +) + +func MustNewRunningServer(t *testing.T) *server.Command { + s := server.NewCommand(&bytes.Buffer{}, ioutil.Discard, ioutil.Discard) + s.Config.Bind = ":0" + port := strconv.Itoa(MustOpenPort(t)) + s.Config.GossipPort = port + s.Config.GossipSeed = "localhost:" + port + td, err := ioutil.TempDir("", "") + if err != nil { + t.Fatalf("error creating temp data directory: %v", err) + } + s.Config.DataDir = td + err = s.Run() + if err != nil { + t.Fatalf("error running new pilosa server: %v", err) + } + return s +} + +func MustOpenPort(t *testing.T) int { + addr, err := net.ResolveTCPAddr("tcp", ":0") + if err != nil { + t.Fatalf("resolving new port addr: %v", err) + } + + l, err := net.ListenTCP("tcp", addr) + if err != nil { + t.Fatalf("listening to get new port: %v", err) + } + defer func() { + err := l.Close() + if err != nil { + t.Logf("error closing listener in MustOpenPort: %v", err) + } + }() + return l.Addr().(*net.TCPAddr).Port +}