blob: 0fc425fdfbbafba9ff200c8828428f510c51e9a6 [file] [log] [blame]
Jiri Simsa5293dcb2014-05-10 09:56:38 -07001package rt_test
2
3import (
4 "fmt"
5 "os"
6 "regexp"
7 "testing"
8
9 _ "veyron/lib/testutil"
10 "veyron/lib/testutil/blackbox"
11
12 "veyron2/rt"
13 "veyron2/vlog"
14)
15
16func init() {
17 blackbox.CommandTable["child"] = child
18}
19
20func TestHelperProcess(t *testing.T) {
21 blackbox.HelperProcess(t)
22}
23
24func TestInit(t *testing.T) {
25 r, err := rt.New()
26 if err != nil {
27 t.Fatalf("error: %s", err)
28 }
29 l := r.Logger()
30 args := fmt.Sprintf("%s", l)
31 expected := regexp.MustCompile("name=veyron logdirs=\\[/tmp\\] logtostderr=true|false alsologtostderr=false|true max_stack_buf_size=4292608 v=[0-9] stderrthreshold=2 vmodule= log_backtrace_at=:0")
32 if !expected.MatchString(args) {
33 t.Errorf("unexpected default args: %q", args)
34 }
35 if id := r.Identity().PublicID(); id == nil || len(id.Names()) == 0 || len(id.Names()[0]) == 0 {
36 t.Errorf("New should have created an identity. Created %v", id)
37 }
38}
39
40func child(argv []string) {
41 r := rt.Init()
42 vlog.Infof("%s\n", r.Logger())
43 fmt.Printf("%s\n", r.Logger())
44 _ = r
45 blackbox.WaitForEOFOnStdin()
46 fmt.Printf("done\n")
47}
48
49func TestInitArgs(t *testing.T) {
50 c := blackbox.HelperCommand(t, "child", "--logtostderr=true", "--vv=3", "--", "foobar")
51 defer c.Cleanup()
52 c.Cmd.Start()
53 str, err := c.ReadLineFromChild()
54 if err != nil {
55 t.Fatalf("failed to read from child: %v", err)
56 }
57 expected := fmt.Sprintf("name=veyron "+
58 "logdirs=[%s] "+
59 "logtostderr=true "+
60 "alsologtostderr=true "+
61 "max_stack_buf_size=4292608 "+
62 "v=3 "+
63 "stderrthreshold=2 "+
64 "vmodule= "+
65 "log_backtrace_at=:0",
66 os.TempDir())
67
68 if str != expected {
69 t.Fatalf("unexpected output from child: %s", str)
70 }
71 c.CloseStdin()
72 c.Expect("done")
73 c.ExpectEOFAndWait()
74}