1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
package format
import (
"bytes"
"context"
"testing"
"time"
"collectd.org/api"
)
func TestWrite(t *testing.T) {
ctx := context.Background()
cases := []struct {
ValueList *api.ValueList
Graphite *Graphite
Want string
}{
{ // case 0
ValueList: &api.ValueList{
Identifier: api.Identifier{
Host: "example.com",
Plugin: "golang",
PluginInstance: "example",
Type: "gauge",
TypeInstance: "answer",
},
Time: time.Unix(1426975989, 1),
Interval: 10 * time.Second,
Values: []api.Value{api.Gauge(42)},
},
Graphite: &Graphite{
Prefix: "-->",
Suffix: "<--",
EscapeChar: "_",
SeparateInstances: false,
AlwaysAppendDS: true,
},
Want: "-->example_com<--.golang-example.gauge-answer.value 42 1426975989\r\n",
},
{ // case 1
ValueList: &api.ValueList{
Identifier: api.Identifier{
Host: "example.com",
Plugin: "golang",
PluginInstance: "example",
Type: "gauge",
TypeInstance: "answer",
},
Time: time.Unix(1426975989, 1),
Interval: 10 * time.Second,
Values: []api.Value{api.Derive(1337)},
},
Graphite: &Graphite{
Prefix: "collectd.",
Suffix: "",
EscapeChar: "@",
SeparateInstances: true,
AlwaysAppendDS: false,
},
Want: "collectd.example@com.golang.example.gauge.answer 1337 1426975989\r\n",
},
{ // case 2
ValueList: &api.ValueList{
Identifier: api.Identifier{
Host: "example.com",
Plugin: "golang",
Type: "gauge",
},
Time: time.Unix(1426975989, 1),
Interval: 10 * time.Second,
Values: []api.Value{api.Gauge(42), api.Derive(1337)},
},
Graphite: &Graphite{
Prefix: "collectd.",
Suffix: "",
EscapeChar: "_",
SeparateInstances: true,
AlwaysAppendDS: false,
},
Want: "collectd.example_com.golang.gauge.0 42 1426975989\r\n" +
"collectd.example_com.golang.gauge.1 1337 1426975989\r\n",
},
}
for i, c := range cases {
buf := &bytes.Buffer{}
c.Graphite.W = buf
if err := c.Graphite.Write(ctx, c.ValueList); err != nil {
t.Errorf("case %d: got %v, want %v", i, err, nil)
}
got := buf.String()
if got != c.Want {
t.Errorf("got %q, want %q", got, c.Want)
}
}
}
|