Skip to content

Commit b97b9fd

Browse files
authored
tsplot: Add additional test coverage where useful. (#15)
Test coverage added for: - SetQueryFilter - SetAlignmentPeriod - Setting aggregation opts
1 parent df4c8e6 commit b97b9fd

File tree

2 files changed

+78
-14
lines changed

2 files changed

+78
-14
lines changed

README.md

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,25 @@ func main() {
2323
2424
... snip ...
2525
26-
now := time.Now()
27-
mq := &tsplot.MetricQuery{
28-
Project: "bitly-gcp-prod"
29-
MetricDescriptor: "custom.googleapis.com/opencensus/fishnet/queuereader_fishnet/messages_total"
30-
StartTime: now.Add(-time.Hour * 2) // start two hours ago
31-
EndTime: now
32-
}
33-
34-
35-
// enable cross series reducer
36-
query.SetReduce(true)
37-
38-
tsi, err := mq.PerformWithClient(client)
26+
start := time.Now().Add(-1 * time.Hour)
27+
end := time.Now()
28+
mq := &tsplot.NewMetricQuery(
29+
"bitly-gcp-prod", // GCP project
30+
"custom.googleapis.com/opencensus/fishent/queuereader_fishnet/messages_total", // metric descriptor
31+
&start, // start of time window
32+
&end, // end of time window
33+
)
34+
35+
// disable cross series reducer (MEAN reduction is default)
36+
query.Set_REDUCE_NONE()
37+
38+
// set different alignment window. (Default is 1 minute)
39+
query.SetAlignmentPeriod(time.Minute * 2)
40+
41+
tsi, err := mq.PerformWithClient(client) // client is provided by user
3942
if err != nil {
4043
fmt.Printf("error performing query: %v\n", err)
41-
os.Exit(1)
44+
}
4245
}
4346
```
4447

@@ -53,6 +56,7 @@ func main() {
5356
5457
ts := tsplot.TimeSeries{}
5558
59+
// optionally iterate over returned time series
5660
timeSeries, _ := tsi.Next()
5761
ts[metric] = ts.GetPoints()
5862

tsplot/query_test.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package tsplot
22

33
import (
44
"testing"
5+
"time"
6+
7+
monitoringpb "google.golang.org/genproto/googleapis/monitoring/v3"
58
)
69

710
func TestMetricQuery_BuildRequest(t *testing.T) {
@@ -36,3 +39,60 @@ func TestMetricQuery_BuildRequest(t *testing.T) {
3639
}
3740
}
3841
}
42+
43+
func TestMetricQuery_SetQueryFilter(t *testing.T) {
44+
expectedFilter := "some advanced query"
45+
st := time.Now().Add(-1 * time.Hour)
46+
et := time.Now()
47+
query := NewMetricQuery("bitly-gcp-prod", "", &st, &et)
48+
query.SetQueryFilter(expectedFilter)
49+
50+
tsr, err := query.request()
51+
if err != nil {
52+
t.Error(err)
53+
}
54+
55+
filter := tsr.GetFilter()
56+
if filter != expectedFilter {
57+
t.Fatalf("query filter not overriden. got: %s, expected: %s", filter, expectedFilter)
58+
}
59+
}
60+
61+
func TestMetricQuery_SetAlignmentPeriod(t *testing.T) {
62+
expectedAlignmentPeriod := time.Minute * 10
63+
st := time.Now().Add(-1 * time.Hour)
64+
et := time.Now()
65+
query := NewMetricQuery("bitly-gcp-prod", "some metric", &st, &et)
66+
query.SetAlignmentPeriod(expectedAlignmentPeriod)
67+
68+
req, err := query.request()
69+
if err != nil {
70+
t.Error(err)
71+
}
72+
73+
alignmentPeriod := req.GetAggregation().GetAlignmentPeriod().GetSeconds()
74+
if req.GetAggregation().GetAlignmentPeriod().GetSeconds() != int64(expectedAlignmentPeriod.Seconds()) {
75+
t.Fatalf("alignment period not overriden. got %d, expected: %s", alignmentPeriod, expectedAlignmentPeriod)
76+
}
77+
}
78+
79+
func TestMetricQuery_AggregationOptions(t *testing.T) {
80+
st := time.Now().Add(-1 * time.Hour)
81+
et := time.Now()
82+
query := NewMetricQuery("bitly-gcp-prod", "some metric", &st, &et)
83+
query.Set_ALIGN_NONE()
84+
query.Set_REDUCE_NONE()
85+
86+
req, err := query.request()
87+
if err != nil {
88+
t.Error(err)
89+
}
90+
91+
aggregation := req.GetAggregation()
92+
if aggregation.GetPerSeriesAligner() != monitoringpb.Aggregation_ALIGN_NONE {
93+
t.Fatal("aligner not overridden")
94+
}
95+
if aggregation.GetCrossSeriesReducer() != monitoringpb.Aggregation_REDUCE_NONE {
96+
t.Fatal("reducer not overridden")
97+
}
98+
}

0 commit comments

Comments
 (0)