github.com/mackerelio/mackerel-agent-plugins@v0.89.3/mackerel-plugin-munin/lib/munin_test.go (about) 1 package mpmunin 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 var plg = "swap" 11 var muninms = map[string](*MuninMetric){} 12 var ss = services{} 13 14 func TestParsePluginConfig(t *testing.T) { 15 stub := `graph_title Swap in/out 16 graph_args -l 0 --base 1000 17 graph_vlabel pages per ${graph_period} in (-) / out (+) 18 graph_category system 19 swap_in.label swapIn 20 swap_in.type DERIVE 21 swap_in.max 100000 22 swap_in.min 0 23 swap_in.graph no 24 swap_in.draw STACK 25 swap_in.value must_be_ignored 26 swap_out.label swapOut 27 swap_out.type DERIVE 28 swap_out.max 100000 29 swap_out.min 0 30 swap_out.negative swap_in 31 hoge.label ho GE 32 hoge.type DERIVE 33 ` 34 var title string 35 36 parsePluginConfig(stub, &muninms, &title) 37 38 assert.EqualValues(t, title, "Swap in/out") 39 40 var met *MuninMetric 41 42 assert.NotNil(t, muninms["swap_in"]) 43 met = muninms["swap_in"] 44 assert.EqualValues(t, met.Label, "swapIn") 45 assert.EqualValues(t, met.Type, "DERIVE") 46 assert.EqualValues(t, met.Draw, "STACK") 47 assert.EqualValues(t, met.Value, "") 48 49 assert.NotNil(t, muninms["swap_out"]) 50 met = muninms["swap_out"] 51 assert.EqualValues(t, met.Label, "swapOut") 52 assert.EqualValues(t, met.Type, "DERIVE") 53 assert.EqualValues(t, met.Draw, "") 54 assert.EqualValues(t, met.Value, "") 55 56 assert.NotNil(t, muninms["hoge"]) 57 met = muninms["hoge"] 58 assert.EqualValues(t, met.Label, "ho GE") 59 assert.EqualValues(t, met.Type, "DERIVE") 60 assert.EqualValues(t, met.Draw, "") 61 assert.EqualValues(t, met.Value, "") 62 } 63 64 func TestParsePluginVals(t *testing.T) { 65 stub := `swap_out.value 2833950519 66 swap_in.value 2833950530 67 ` 68 parsePluginVals(stub, &muninms) 69 70 var met *MuninMetric 71 72 assert.NotNil(t, muninms["swap_in"]) 73 met = muninms["swap_in"] 74 assert.EqualValues(t, met.Value, "2833950530") 75 76 assert.NotNil(t, muninms["swap_out"]) 77 met = muninms["swap_out"] 78 assert.EqualValues(t, met.Value, "2833950519") 79 } 80 81 func TestRemoveUselessMetrics(t *testing.T) { 82 removeUselessMetrics(&muninms) 83 84 assert.Nil(t, muninms["hoge"]) 85 } 86 87 func TestGetEnvSettingsReader(t *testing.T) { 88 pluginconfstub := ` 89 env.OutOfService 1 90 91 [swap*] 92 env.foo bar 93 env.hoge wild 94 95 [s*] 96 env.foo bababa 97 98 [swap] 99 env.hoge abs 100 #env.piyo # aaa 101 102 [snap] 103 env.snap yes 104 # single comment 105 106 [*] 107 env.hoge wwww 108 env.poyo 1 2 3 # commented... 109 env.sharp \# \# # commented 110 111 [swap*] 112 env.foo2 bar2 113 ` 114 getEnvSettingsReader(&ss, plg, bytes.NewBufferString(pluginconfstub)) 115 116 assert.Nil(t, ss["snap"]) 117 118 var s serviceEnvs 119 120 s = ss["*"] 121 assert.EqualValues(t, s["hoge"], "wwww") 122 assert.EqualValues(t, s["poyo"], "1 2 3") 123 assert.EqualValues(t, s["sharp"], "# #") 124 125 s = ss["s*"] 126 assert.EqualValues(t, s["foo"], "bababa") 127 128 s = ss["swap*"] 129 assert.EqualValues(t, s["OutOfService"], "") 130 assert.EqualValues(t, s["foo"], "bar") 131 assert.EqualValues(t, s["hoge"], "wild") 132 assert.EqualValues(t, s["foo2"], "bar2") 133 134 s = ss["swap"] 135 assert.EqualValues(t, s["hoge"], "abs") 136 assert.EqualValues(t, s["piyo"], "") 137 138 pluginconfstub2 := ` 139 [swap] 140 env.piyo piYO 141 ` 142 getEnvSettingsReader(&ss, plg, bytes.NewBufferString(pluginconfstub2)) 143 s = ss["swap"] 144 assert.EqualValues(t, s["piyo"], "piYO") 145 } 146 147 func TestCompileEnvPairs(t *testing.T) { 148 envs := *compileEnvPairs(&ss, plg) 149 150 assert.EqualValues(t, envs["snap"], "") 151 assert.EqualValues(t, envs["OutOfService"], "") 152 153 assert.EqualValues(t, envs["poyo"], "1 2 3") 154 assert.EqualValues(t, envs["sharp"], "# #") 155 assert.EqualValues(t, envs["foo"], "bar") 156 assert.EqualValues(t, envs["foo2"], "bar2") 157 assert.EqualValues(t, envs["hoge"], "abs") 158 assert.EqualValues(t, envs["piyo"], "piYO") 159 }