-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathaggregator_test.go
121 lines (113 loc) · 2.78 KB
/
aggregator_test.go
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package logpeck
import (
log "github.com/Sirupsen/logrus"
"strconv"
"testing"
)
func TestStartSend(*testing.T) {
log.Infof("[aggregator_test] TestStartSend")
test := AggregatorOption{
PreMeasurment: "Test",
Measurment: "aaa",
Tags: []string{"cost"},
Aggregations: []string{"cnt"},
Target: "cost",
Timestamp: "time",
}
var options []AggregatorOption
options = append(options, test)
aggregatorConfig := AggregatorConfig{
Enable: true,
Interval: int64(30),
Options: options,
}
aggregator := NewAggregator(&aggregatorConfig)
deadline := aggregator.IsDeadline(int64(29))
if deadline == true {
panic(aggregator)
}
deadline = aggregator.IsDeadline(int64(31))
if deadline == false {
panic(aggregator)
}
}
func TestRecord(*testing.T) {
test := AggregatorOption{
PreMeasurment: "Test",
Measurment: "aaa",
Tags: []string{"upstream"},
Aggregations: []string{"cnt"},
Target: "cost",
Timestamp: "time",
}
var options []AggregatorOption
options = append(options, test)
aggregatorConfig := AggregatorConfig{
Enable: true,
Interval: int64(30),
Options: options,
}
aggregator := NewAggregator(&aggregatorConfig)
fields := make(map[string]interface{})
fields["aaa"] = "getTest"
fields["upstream"] = "127.0.0.1"
fields["cost"] = "2"
fields["time"] = "15"
if aggregator.Record(fields) != int64(15) {
panic(fields)
}
if aggregator.buckets["Test_aaa_cost"]["Test_getTest_cost,upstream=127.0.0.1"][0] != 2 {
panic(aggregator)
}
if aggregator.Record(fields) != int64(15) {
panic(fields)
}
if aggregator.buckets["Test_aaa_cost"]["Test_getTest_cost,upstream=127.0.0.1"][0]+aggregator.buckets["Test_aaa_cost"]["Test_getTest_cost,upstream=127.0.0.1"][1] != 4 {
panic(aggregator)
}
}
func TestDump(*testing.T) {
test := AggregatorOption{
PreMeasurment: "Test",
Measurment: "aaa",
Tags: []string{"upstream"},
Aggregations: []string{"cnt", "avg", "p99", "p50"},
Target: "cost",
Timestamp: "time",
}
var options []AggregatorOption
options = append(options, test)
aggregatorConfig := AggregatorConfig{
Enable: true,
Interval: int64(30),
Options: options,
}
aggregator := NewAggregator(&aggregatorConfig)
fields := make(map[string]interface{})
fields["aaa"] = "getTest"
fields["upstream"] = "127.0.0.1"
fields["cost"] = "0"
fields["time"] = "15"
for i := 9; i >= 0; i-- {
fields["cost"] = strconv.Itoa(i)
aggregator.Record(fields)
}
dump := aggregator.Dump(int64(30))
log.Infof("%v", dump)
a := dump["Test_getTest_cost,upstream=127.0.0.1"].(map[string]float64)
if a["cnt"] != 10 {
panic(a)
}
if a["avg"] != 4.5 {
log.Panicf("%#v", a)
}
if a["p99"] != 8 {
panic(a)
}
if a["p50"] != 4 {
panic(a)
}
if dump["timestamp"].(int64) != 30 {
panic(dump)
}
}