OLD | NEW |
1 // Copyright 2016 The LUCI Authors. All rights reserved. | 1 // Copyright 2016 The LUCI Authors. All rights reserved. |
2 // Use of this source code is governed under the Apache License, Version 2.0 | 2 // Use of this source code is governed under the Apache License, Version 2.0 |
3 // that can be found in the LICENSE file. | 3 // that can be found in the LICENSE file. |
4 | 4 |
5 package tsmon | 5 package tsmon |
6 | 6 |
7 import ( | 7 import ( |
| 8 "io/ioutil" |
| 9 "os" |
8 "testing" | 10 "testing" |
9 | 11 |
10 "golang.org/x/net/context" | 12 "golang.org/x/net/context" |
11 | 13 |
12 "github.com/luci/luci-go/common/tsmon/target" | 14 "github.com/luci/luci-go/common/tsmon/target" |
13 | 15 |
14 . "github.com/smartystreets/goconvey/convey" | 16 . "github.com/smartystreets/goconvey/convey" |
15 ) | 17 ) |
16 | 18 |
17 func TestInitializeFromFlags(t *testing.T) { | 19 func TestInitializeFromFlags(t *testing.T) { |
18 c := context.Background() | 20 c := context.Background() |
19 Convey("Initialize tsmon", t, func() { | 21 Convey("Initialize tsmon", t, func() { |
20 tsmonFlags := NewFlags() | 22 tsmonFlags := NewFlags() |
21 tsmonFlags.Endpoint = "file://fake/path" | 23 tsmonFlags.Endpoint = "file://fake/path" |
22 tsmonFlags.Target.TargetType = target.DeviceType | 24 tsmonFlags.Target.TargetType = target.DeviceType |
23 » » tsmonFlags.Target.SysInfo = &target.SysInfo{Hostname: "test-m4",
Region: "test-reg"} | 25 » » tsmonFlags.Target.SysInfo = &target.SysInfo{ |
| 26 » » » Hostname: "host-sys", |
| 27 » » » Region: "region-sys", |
| 28 » » } |
24 tsmonFlags.Flush = FlushManual | 29 tsmonFlags.Flush = FlushManual |
25 | 30 |
26 Convey("with autogenerated hostnames", func() { | 31 Convey("with autogenerated hostnames", func() { |
27 tsmonFlags.Target.AutoGenHostname = true | 32 tsmonFlags.Target.AutoGenHostname = true |
28 err := InitializeFromFlags(c, &tsmonFlags) | 33 err := InitializeFromFlags(c, &tsmonFlags) |
29 So(err, ShouldBeNil) | 34 So(err, ShouldBeNil) |
30 defer Shutdown(c) | 35 defer Shutdown(c) |
31 | 36 |
32 s := GetState(c).S | 37 s := GetState(c).S |
33 So(s.DefaultTarget(), ShouldHaveSameTypeAs, (*target.Net
workDevice)(nil)) | 38 So(s.DefaultTarget(), ShouldHaveSameTypeAs, (*target.Net
workDevice)(nil)) |
34 target := s.DefaultTarget().(*target.NetworkDevice).AsPr
oto() | 39 target := s.DefaultTarget().(*target.NetworkDevice).AsPr
oto() |
35 » » » So(target.GetHostname(), ShouldEqual, "autogen:test-m4") | 40 » » » So(target.GetHostname(), ShouldEqual, "autogen:host-sys"
) |
| 41 » » » So(target.GetMetro(), ShouldEqual, "region-sys") |
| 42 » » }) |
| 43 |
| 44 » » Convey("with predefined autogenerated hostnames (Device)", func(
) { |
| 45 » » » tsmonFlags.Target.AutoGenHostname = true |
| 46 » » » tsmonFlags.Target.DeviceHostname = "test-m5" |
| 47 » » » err := InitializeFromFlags(c, &tsmonFlags) |
| 48 » » » So(err, ShouldBeNil) |
| 49 » » » defer Shutdown(c) |
| 50 |
| 51 » » » s := GetState(c).S |
| 52 » » » So(s.DefaultTarget(), ShouldHaveSameTypeAs, (*target.Net
workDevice)(nil)) |
| 53 » » » target := s.DefaultTarget().(*target.NetworkDevice).AsPr
oto() |
| 54 » » » So(target.GetHostname(), ShouldEqual, "autogen:test-m5") |
| 55 » » » So(target.GetMetro(), ShouldEqual, "region-sys") |
| 56 » » }) |
| 57 |
| 58 » » Convey("with predefined autogenerated hostnames (Task)", func()
{ |
| 59 » » » tsmonFlags.Target.AutoGenHostname = true |
| 60 » » » tsmonFlags.Target.TaskHostname = "test-m5" |
| 61 » » » tsmonFlags.Target.TargetType = target.TaskType |
| 62 » » » tsmonFlags.Target.TaskServiceName = "test-service" |
| 63 » » » tsmonFlags.Target.TaskJobName = "test-job" |
| 64 » » » err := InitializeFromFlags(c, &tsmonFlags) |
| 65 » » » So(err, ShouldBeNil) |
| 66 » » » defer Shutdown(c) |
| 67 |
| 68 » » » s := GetState(c).S |
| 69 » » » So(s.DefaultTarget(), ShouldHaveSameTypeAs, (*target.Tas
k)(nil)) |
| 70 » » » target := s.DefaultTarget().(*target.Task).AsProto() |
| 71 » » » So(target.GetHostName(), ShouldEqual, "autogen:test-m5") |
| 72 » » » So(target.GetDataCenter(), ShouldEqual, "region-sys") |
36 }) | 73 }) |
37 | 74 |
38 Convey("with static hostnames", func() { | 75 Convey("with static hostnames", func() { |
39 err := InitializeFromFlags(c, &tsmonFlags) | 76 err := InitializeFromFlags(c, &tsmonFlags) |
40 So(err, ShouldBeNil) | 77 So(err, ShouldBeNil) |
41 defer Shutdown(c) | 78 defer Shutdown(c) |
42 | 79 |
43 s := GetState(c).S | 80 s := GetState(c).S |
44 So(s.DefaultTarget(), ShouldHaveSameTypeAs, (*target.Net
workDevice)(nil)) | 81 So(s.DefaultTarget(), ShouldHaveSameTypeAs, (*target.Net
workDevice)(nil)) |
45 target := s.DefaultTarget().(*target.NetworkDevice).AsPr
oto() | 82 target := s.DefaultTarget().(*target.NetworkDevice).AsPr
oto() |
46 » » » So(target.GetHostname(), ShouldEqual, "test-m4") | 83 » » » So(target.GetHostname(), ShouldEqual, "host-sys") |
| 84 » » » So(target.GetMetro(), ShouldEqual, "region-sys") |
| 85 » » }) |
| 86 |
| 87 » » Convey("with predefined static hostnames (Device)", func() { |
| 88 » » » tsmonFlags.Target.DeviceHostname = "host-flag" |
| 89 » » » tsmonFlags.Target.DeviceRegion = "region-flag" |
| 90 » » » err := InitializeFromFlags(c, &tsmonFlags) |
| 91 » » » So(err, ShouldBeNil) |
| 92 » » » defer Shutdown(c) |
| 93 |
| 94 » » » s := GetState(c).S |
| 95 » » » So(s.DefaultTarget(), ShouldHaveSameTypeAs, (*target.Net
workDevice)(nil)) |
| 96 » » » target := s.DefaultTarget().(*target.NetworkDevice).AsPr
oto() |
| 97 » » » So(target.GetHostname(), ShouldEqual, "host-flag") |
| 98 » » » So(target.GetMetro(), ShouldEqual, "region-flag") |
| 99 » » }) |
| 100 |
| 101 » » Convey("with predefined static hostnames (Task)", func() { |
| 102 » » » tsmonFlags.Target.TaskHostname = "host-flag" |
| 103 » » » tsmonFlags.Target.TaskRegion = "region-flag" |
| 104 » » » tsmonFlags.Target.TargetType = target.TaskType |
| 105 » » » tsmonFlags.Target.TaskServiceName = "test-service" |
| 106 » » » tsmonFlags.Target.TaskJobName = "test-job" |
| 107 » » » err := InitializeFromFlags(c, &tsmonFlags) |
| 108 » » » So(err, ShouldBeNil) |
| 109 » » » defer Shutdown(c) |
| 110 |
| 111 » » » s := GetState(c).S |
| 112 » » » So(s.DefaultTarget(), ShouldHaveSameTypeAs, (*target.Tas
k)(nil)) |
| 113 » » » target := s.DefaultTarget().(*target.Task).AsProto() |
| 114 » » » So(target.GetHostName(), ShouldEqual, "host-flag") |
| 115 » » » So(target.GetDataCenter(), ShouldEqual, "region-flag") |
| 116 » » }) |
| 117 |
| 118 » » Convey("with region in config and hostname in a flag", func() { |
| 119 » » » tf, err := ioutil.TempFile("", "config_test") |
| 120 » » » if err != nil { |
| 121 » » » » t.Fail() |
| 122 » » » } |
| 123 » » » defer tf.Close() |
| 124 » » » defer os.Remove(tf.Name()) |
| 125 |
| 126 » » » tf.WriteString(` |
| 127 » » » {"endpoint": "foo", |
| 128 » » » "credentials": "bar", |
| 129 » » » "autogen_hostname": true, |
| 130 » » » "hostname": "host-config", |
| 131 » » » "region": "region-config" |
| 132 » » » }`) |
| 133 » » » tf.Sync() |
| 134 » » » tsmonFlags.ConfigFile = tf.Name() |
| 135 » » » tsmonFlags.Target.DeviceHostname = "host-flag" |
| 136 » » » err = InitializeFromFlags(c, &tsmonFlags) |
| 137 » » » So(err, ShouldBeNil) |
| 138 » » » defer Shutdown(c) |
| 139 |
| 140 » » » s := GetState(c).S |
| 141 » » » So(s.DefaultTarget(), ShouldHaveSameTypeAs, (*target.Net
workDevice)(nil)) |
| 142 » » » target := s.DefaultTarget().(*target.NetworkDevice).AsPr
oto() |
| 143 » » » So(target.GetHostname(), ShouldEqual, "autogen:host-flag
") |
| 144 » » » So(target.GetMetro(), ShouldEqual, "region-config") |
47 }) | 145 }) |
48 | 146 |
49 }) | 147 }) |
50 } | 148 } |
OLD | NEW |