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  }