@@ -27,6 +27,7 @@ import (
27
27
"google.golang.org/protobuf/testing/protocmp"
28
28
29
29
"github.com/prometheus/client_golang/api"
30
+ writev1 "github.com/prometheus/client_golang/api/prometheus/v1/remote/genproto/v1"
30
31
writev2 "github.com/prometheus/client_golang/api/prometheus/v1/remote/genproto/v2"
31
32
)
32
33
@@ -61,6 +62,7 @@ func TestRetryAfterDuration(t *testing.T) {
61
62
62
63
type mockStorage struct {
63
64
v2Reqs []* writev2.Request
65
+ v1Reqs []* writev1.WriteRequest
64
66
protos []WriteProtoFullName
65
67
66
68
mockCode * int
@@ -72,14 +74,23 @@ func (m *mockStorage) Store(_ context.Context, msgFullName WriteProtoFullName, s
72
74
return w , * m .mockCode , m .mockErr
73
75
}
74
76
75
- // This test expects v2 only.
76
- r := & writev2.Request {}
77
- if err := proto .Unmarshal (serializedRequest , r ); err != nil {
78
- return WriteResponseStats {}, http .StatusInternalServerError , err
77
+ if msgFullName == WriteProtoFullNameV1 {
78
+ r := & writev1.WriteRequest {}
79
+ if err := proto .Unmarshal (serializedRequest , r ); err != nil {
80
+ return WriteResponseStats {}, http .StatusInternalServerError , err
81
+ }
82
+ m .v1Reqs = append (m .v1Reqs , r )
83
+ m .protos = append (m .protos , msgFullName )
84
+ return WriteResponseStats {}, http .StatusOK , nil
85
+ } else {
86
+ r := & writev2.Request {}
87
+ if err := proto .Unmarshal (serializedRequest , r ); err != nil {
88
+ return WriteResponseStats {}, http .StatusInternalServerError , err
89
+ }
90
+ m .v2Reqs = append (m .v2Reqs , r )
91
+ m .protos = append (m .protos , msgFullName )
92
+ return stats (r ), http .StatusOK , nil
79
93
}
80
- m .v2Reqs = append (m .v2Reqs , r )
81
- m .protos = append (m .protos , msgFullName )
82
- return stats (r ), http .StatusOK , nil
83
94
}
84
95
85
96
func testV2 () * writev2.Request {
@@ -112,6 +123,20 @@ func testV2() *writev2.Request {
112
123
}
113
124
}
114
125
126
+ func testV1 () * writev1.WriteRequest {
127
+ return & writev1.WriteRequest {
128
+ Timeseries : []* writev1.TimeSeries {
129
+ {
130
+ Labels : []* writev1.Label {
131
+ {Name : "__name__" , Value : "metric1" },
132
+ {Name : "foo" , Value : "bar1" },
133
+ },
134
+ Samples : []* writev1.Sample {{Value : 1.1 , Timestamp : 1214141 }, {Value : 1.5 , Timestamp : 1214180 }},
135
+ },
136
+ },
137
+ }
138
+ }
139
+
115
140
func stats (req * writev2.Request ) (s WriteResponseStats ) {
116
141
s .Confirmed = true
117
142
for _ , ts := range req .Timeseries {
@@ -145,11 +170,22 @@ func TestRemoteAPI_Write_WithHandler(t *testing.T) {
145
170
if err != nil {
146
171
t .Fatal (err )
147
172
}
173
+
148
174
if diff := cmp .Diff (stats (req ), s ); diff != "" {
149
175
t .Fatal ("unexpected stats" , diff )
150
176
}
177
+
178
+ req2 := testV1 ()
179
+ _ , err = client .Write (context .Background (), req2 )
180
+ if err != nil {
181
+ t .Fatal (err )
182
+ }
183
+
151
184
if len (mStore .v2Reqs ) != 1 {
152
- t .Fatal ("expected 1 request stored, got" , mStore .v2Reqs )
185
+ t .Fatal ("expected 1 v2 request stored, got" , mStore .v2Reqs )
186
+ }
187
+ if len (mStore .v1Reqs ) != 1 {
188
+ t .Fatal ("expected 1 v1 request stored, got" , mStore .v1Reqs )
153
189
}
154
190
if diff := cmp .Diff (req , mStore .v2Reqs [0 ], protocmp .Transform ()); diff != "" {
155
191
t .Fatal ("unexpected request received" , diff )
0 commit comments