8
8
"context"
9
9
"crypto/tls"
10
10
"encoding/json"
11
+ "errors"
11
12
"fmt"
12
13
"io"
13
14
"net/http"
@@ -122,7 +123,7 @@ func TestConsumeMetrics(t *testing.T) {
122
123
wantErr bool
123
124
wantPermanentErr bool
124
125
wantThrottleErr bool
125
- expectedErrorMsg string
126
+ wantStatusCode int
126
127
}{
127
128
{
128
129
name : "happy_path" ,
@@ -135,22 +136,23 @@ func TestConsumeMetrics(t *testing.T) {
135
136
httpResponseCode : http .StatusForbidden ,
136
137
numDroppedTimeSeries : 1 ,
137
138
wantErr : true ,
138
- expectedErrorMsg : "HTTP 403 \" Forbidden \" " ,
139
+ wantStatusCode : 403 ,
139
140
},
140
141
{
141
142
name : "response_bad_request" ,
142
143
md : smallBatch ,
143
144
httpResponseCode : http .StatusBadRequest ,
144
145
numDroppedTimeSeries : 1 ,
145
146
wantPermanentErr : true ,
146
- expectedErrorMsg : "Permanent error: \" HTTP/1.1 400 Bad Request" ,
147
+ wantStatusCode : 400 ,
147
148
},
148
149
{
149
150
name : "response_throttle" ,
150
151
md : smallBatch ,
151
152
httpResponseCode : http .StatusTooManyRequests ,
152
153
numDroppedTimeSeries : 1 ,
153
154
wantThrottleErr : true ,
155
+ wantStatusCode : 429 ,
154
156
},
155
157
{
156
158
name : "response_throttle_with_header" ,
@@ -159,6 +161,7 @@ func TestConsumeMetrics(t *testing.T) {
159
161
httpResponseCode : http .StatusServiceUnavailable ,
160
162
numDroppedTimeSeries : 1 ,
161
163
wantThrottleErr : true ,
164
+ wantStatusCode : 503 ,
162
165
},
163
166
{
164
167
name : "large_batch" ,
@@ -207,25 +210,29 @@ func TestConsumeMetrics(t *testing.T) {
207
210
converter : c ,
208
211
}
209
212
213
+ errMsg := fmt .Sprintf ("HTTP \" /v2/datapoint\" %d %q" ,
214
+ tt .wantStatusCode ,
215
+ http .StatusText (tt .wantStatusCode ),
216
+ )
217
+
210
218
numDroppedTimeSeries , err := dpClient .pushMetricsData (context .Background (), tt .md )
211
219
assert .Equal (t , tt .numDroppedTimeSeries , numDroppedTimeSeries )
212
220
213
221
if tt .wantErr {
214
222
assert .Error (t , err )
215
- assert .EqualError (t , err , tt . expectedErrorMsg )
223
+ assert .EqualError (t , err , errMsg )
216
224
return
217
225
}
218
226
219
227
if tt .wantPermanentErr {
220
228
assert .Error (t , err )
221
229
assert .True (t , consumererror .IsPermanent (err ))
222
- assert .True (t , strings .HasPrefix (err .Error (), tt .expectedErrorMsg ))
223
- assert .ErrorContains (t , err , "response content" )
230
+ assert .ErrorContains (t , err , errMsg )
224
231
return
225
232
}
226
233
227
234
if tt .wantThrottleErr {
228
- expected := fmt . Errorf ( "HTTP %d %q" , tt . httpResponseCode , http . StatusText ( tt . httpResponseCode ) )
235
+ expected := errors . New ( errMsg )
229
236
expected = exporterhelper .NewThrottleRetry (expected , time .Duration (tt .retryAfter )* time .Second )
230
237
assert .EqualValues (t , expected , err )
231
238
return
@@ -1892,8 +1899,8 @@ func TestConsumeMixedMetrics(t *testing.T) {
1892
1899
wantErr bool
1893
1900
wantPermanentErr bool
1894
1901
wantThrottleErr bool
1895
- expectedErrorMsg string
1896
1902
wantPartialMetricsErr bool
1903
+ wantStatusCode int
1897
1904
}{
1898
1905
{
1899
1906
name : "happy_path" ,
@@ -1912,15 +1919,15 @@ func TestConsumeMixedMetrics(t *testing.T) {
1912
1919
sfxHTTPResponseCode : http .StatusForbidden ,
1913
1920
numDroppedTimeSeries : 1 ,
1914
1921
wantErr : true ,
1915
- expectedErrorMsg : "HTTP 403 \" Forbidden \" " ,
1922
+ wantStatusCode : 403 ,
1916
1923
},
1917
1924
{
1918
1925
name : "response_forbidden_otlp" ,
1919
1926
md : smallBatchHistogramOnly ,
1920
1927
otlpHTTPResponseCode : http .StatusForbidden ,
1921
1928
numDroppedTimeSeries : 2 ,
1922
1929
wantErr : true ,
1923
- expectedErrorMsg : "HTTP 403 \" Forbidden \" " ,
1930
+ wantStatusCode : 403 ,
1924
1931
},
1925
1932
{
1926
1933
name : "response_forbidden_mixed" ,
@@ -1929,23 +1936,23 @@ func TestConsumeMixedMetrics(t *testing.T) {
1929
1936
otlpHTTPResponseCode : http .StatusForbidden ,
1930
1937
numDroppedTimeSeries : 2 ,
1931
1938
wantErr : true ,
1932
- expectedErrorMsg : "HTTP 403 \" Forbidden \" " ,
1939
+ wantStatusCode : 403 ,
1933
1940
},
1934
1941
{
1935
1942
name : "response_bad_request_sfx" ,
1936
1943
md : smallBatch ,
1937
1944
sfxHTTPResponseCode : http .StatusBadRequest ,
1938
1945
numDroppedTimeSeries : 1 ,
1939
1946
wantPermanentErr : true ,
1940
- expectedErrorMsg : "Permanent error: \" HTTP/1.1 400 Bad Request" ,
1947
+ wantStatusCode : 400 ,
1941
1948
},
1942
1949
{
1943
1950
name : "response_bad_request_otlp" ,
1944
1951
md : smallBatchHistogramOnly ,
1945
1952
otlpHTTPResponseCode : http .StatusBadRequest ,
1946
1953
numDroppedTimeSeries : 2 ,
1947
1954
wantPermanentErr : true ,
1948
- expectedErrorMsg : "Permanent error: \" HTTP/1.1 400 Bad Request" ,
1955
+ wantStatusCode : 400 ,
1949
1956
},
1950
1957
{
1951
1958
name : "response_bad_request_mixed" ,
@@ -1954,14 +1961,15 @@ func TestConsumeMixedMetrics(t *testing.T) {
1954
1961
otlpHTTPResponseCode : http .StatusBadRequest ,
1955
1962
numDroppedTimeSeries : 2 ,
1956
1963
wantPermanentErr : true ,
1957
- expectedErrorMsg : "Permanent error: \" HTTP/1.1 400 Bad Request" ,
1964
+ wantStatusCode : 400 ,
1958
1965
},
1959
1966
{
1960
1967
name : "response_throttle_sfx" ,
1961
1968
md : smallBatch ,
1962
1969
sfxHTTPResponseCode : http .StatusTooManyRequests ,
1963
1970
numDroppedTimeSeries : 1 ,
1964
1971
wantThrottleErr : true ,
1972
+ wantStatusCode : 429 ,
1965
1973
},
1966
1974
{
1967
1975
name : "response_throttle_mixed" ,
@@ -1971,6 +1979,7 @@ func TestConsumeMixedMetrics(t *testing.T) {
1971
1979
numDroppedTimeSeries : 2 ,
1972
1980
wantThrottleErr : true ,
1973
1981
wantPartialMetricsErr : true ,
1982
+ wantStatusCode : 429 ,
1974
1983
},
1975
1984
{
1976
1985
name : "response_throttle_otlp" ,
@@ -1979,6 +1988,7 @@ func TestConsumeMixedMetrics(t *testing.T) {
1979
1988
numDroppedTimeSeries : 2 ,
1980
1989
wantThrottleErr : true ,
1981
1990
wantPartialMetricsErr : true ,
1991
+ wantStatusCode : 429 ,
1982
1992
},
1983
1993
{
1984
1994
name : "response_throttle_with_header_sfx" ,
@@ -1987,6 +1997,7 @@ func TestConsumeMixedMetrics(t *testing.T) {
1987
1997
sfxHTTPResponseCode : http .StatusServiceUnavailable ,
1988
1998
numDroppedTimeSeries : 1 ,
1989
1999
wantThrottleErr : true ,
2000
+ wantStatusCode : 503 ,
1990
2001
},
1991
2002
{
1992
2003
name : "response_throttle_with_header_otlp" ,
@@ -1996,6 +2007,7 @@ func TestConsumeMixedMetrics(t *testing.T) {
1996
2007
numDroppedTimeSeries : 2 ,
1997
2008
wantThrottleErr : true ,
1998
2009
wantPartialMetricsErr : true ,
2010
+ wantStatusCode : 503 ,
1999
2011
},
2000
2012
{
2001
2013
name : "response_throttle_with_header_mixed" ,
@@ -2006,6 +2018,7 @@ func TestConsumeMixedMetrics(t *testing.T) {
2006
2018
numDroppedTimeSeries : 2 ,
2007
2019
wantThrottleErr : true ,
2008
2020
wantPartialMetricsErr : true ,
2021
+ wantStatusCode : 503 ,
2009
2022
},
2010
2023
{
2011
2024
name : "large_batch" ,
@@ -2065,31 +2078,36 @@ func TestConsumeMixedMetrics(t *testing.T) {
2065
2078
numDroppedTimeSeries , err := sfxClient .pushMetricsData (context .Background (), tt .md )
2066
2079
assert .Equal (t , tt .numDroppedTimeSeries , numDroppedTimeSeries )
2067
2080
2081
+ errMsg := fmt .Sprintf ("HTTP \" /v2/datapoint\" %d %q" ,
2082
+ tt .wantStatusCode ,
2083
+ http .StatusText (tt .wantStatusCode ),
2084
+ )
2085
+
2068
2086
if tt .wantErr {
2069
2087
assert .Error (t , err )
2070
- assert .EqualError (t , err , tt . expectedErrorMsg )
2088
+ assert .EqualError (t , err , errMsg )
2071
2089
return
2072
2090
}
2073
2091
2074
2092
if tt .wantPermanentErr {
2093
+ errMsg = "Permanent error: " + errMsg
2075
2094
assert .Error (t , err )
2076
2095
assert .True (t , consumererror .IsPermanent (err ))
2077
- assert .True (t , strings .HasPrefix (err .Error (), tt .expectedErrorMsg ))
2078
- assert .ErrorContains (t , err , "response content" )
2096
+ assert .EqualError (t , err , errMsg )
2079
2097
return
2080
2098
}
2081
2099
2082
2100
if tt .wantThrottleErr {
2083
2101
if tt .wantPartialMetricsErr {
2084
2102
partialMetrics , _ := utils .GetHistograms (smallBatch )
2085
- throttleErr := fmt . Errorf ( "HTTP %d %q" , tt . otlpHTTPResponseCode , http . StatusText ( tt . otlpHTTPResponseCode ) )
2103
+ throttleErr := errors . New ( errMsg )
2086
2104
throttleErr = exporterhelper .NewThrottleRetry (throttleErr , time .Duration (tt .retryAfter )* time .Second )
2087
2105
testErr := consumererror .NewMetrics (throttleErr , partialMetrics )
2088
2106
assert .EqualValues (t , testErr , err )
2089
2107
return
2090
2108
}
2091
2109
2092
- expected := fmt . Errorf ( "HTTP %d %q" , tt . sfxHTTPResponseCode , http . StatusText ( tt . sfxHTTPResponseCode ) )
2110
+ expected := errors . New ( errMsg )
2093
2111
expected = exporterhelper .NewThrottleRetry (expected , time .Duration (tt .retryAfter )* time .Second )
2094
2112
assert .EqualValues (t , expected , err )
2095
2113
return
0 commit comments