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