blob: 9ab0a1efc6f01cc4d5c5667f8888c15f0f6d924f [file] [log] [blame]
Adam Sadovsky82f2c002014-11-26 11:06:27 -08001// Runs the servicerunner binary and checks that it outputs a JSON line to
2// stdout with the expected variables.
3package main
4
5import (
6 "bufio"
7 "encoding/json"
8 "fmt"
9 "io/ioutil"
Robin Thellendcf140c02014-12-08 14:56:24 -080010 "os"
Adam Sadovsky82f2c002014-11-26 11:06:27 -080011 "os/exec"
12 "path"
13 "testing"
Ankur0003fdc2015-01-22 10:59:41 -080014
15 "v.io/core/veyron/lib/testutil"
Adam Sadovsky82f2c002014-11-26 11:06:27 -080016)
17
Matt Rosencrantz2fa2c022015-01-08 15:36:05 -080018func TestMain(t *testing.T) {
Ankur0003fdc2015-01-22 10:59:41 -080019 testutil.UnsetPrincipalEnvVars()
Matt Rosencrantz2fa2c022015-01-08 15:36:05 -080020 tmpdir, err := ioutil.TempDir("", "servicerunner_test")
Adam Sadovsky82f2c002014-11-26 11:06:27 -080021 if err != nil {
22 t.Fatal(err)
23 }
Robin Thellendcf140c02014-12-08 14:56:24 -080024 defer os.RemoveAll(tmpdir)
25 os.Setenv("TMPDIR", tmpdir)
Adam Sadovsky82f2c002014-11-26 11:06:27 -080026
27 bin := path.Join(tmpdir, "servicerunner")
28 fmt.Println("Building", bin)
Matt Rosencrantz2fa2c022015-01-08 15:36:05 -080029 err = exec.Command("v23", "go", "build", "-o", bin, "v.io/core/veyron/tools/servicerunner").Run()
30 if err != nil {
31 t.Fatal(err)
32 }
Adam Sadovsky82f2c002014-11-26 11:06:27 -080033
34 cmd := exec.Command(bin)
35 stdout, err := cmd.StdoutPipe()
Matt Rosencrantz2fa2c022015-01-08 15:36:05 -080036 if err != nil {
37 t.Fatal(err)
38 }
39 if err = cmd.Start(); err != nil {
40 t.Fatal(err)
41 }
Adam Sadovsky82f2c002014-11-26 11:06:27 -080042
43 line, err := bufio.NewReader(stdout).ReadBytes('\n')
Matt Rosencrantz2fa2c022015-01-08 15:36:05 -080044 if err != nil {
45 t.Fatal(err)
46 }
Adam Sadovsky82f2c002014-11-26 11:06:27 -080047 vars := map[string]string{}
Matt Rosencrantz2fa2c022015-01-08 15:36:05 -080048 if err = json.Unmarshal(line, &vars); err != nil {
49 t.Fatal(err)
50 }
Adam Sadovsky82f2c002014-11-26 11:06:27 -080051 fmt.Println(vars)
Nicolas LaCassec7cdf422015-01-08 14:11:29 -080052 expectedVars := []string{
Nicolas LaCassec7cdf422015-01-08 14:11:29 -080053 "MT_NAME",
Cosmos Nicolaou8bd8e102015-01-13 21:52:53 -080054 "PROXY_NAME",
Nicolas LaCassec7cdf422015-01-08 14:11:29 -080055 "WSPR_ADDR",
Cosmos Nicolaou8bd8e102015-01-13 21:52:53 -080056 "TEST_IDENTITYD_NAME",
Nicolas LaCassec7cdf422015-01-08 14:11:29 -080057 "TEST_IDENTITYD_HTTP_ADDR",
58 }
59 for _, name := range expectedVars {
Adam Sadovsky82f2c002014-11-26 11:06:27 -080060 if _, ok := vars[name]; !ok {
61 t.Error("Missing", name)
62 }
63 }
64
Matt Rosencrantz2fa2c022015-01-08 15:36:05 -080065 if err != cmd.Process.Kill() {
66 t.Fatal(err)
67 }
Adam Sadovsky82f2c002014-11-26 11:06:27 -080068}