|
|
|
|
@ -1520,19 +1520,23 @@ func TestRemoteWriteHandler_ResponseStats(t *testing.T) { |
|
|
|
|
|
|
|
|
|
for _, tt := range []struct { |
|
|
|
|
msgType remoteapi.WriteMessageType |
|
|
|
|
payload []byte |
|
|
|
|
forceInjectHeaders bool |
|
|
|
|
expectHeaders bool |
|
|
|
|
}{ |
|
|
|
|
{ |
|
|
|
|
msgType: remoteapi.WriteV1MessageType, |
|
|
|
|
payload: payloadV1, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
msgType: remoteapi.WriteV1MessageType, |
|
|
|
|
payload: payloadV1, |
|
|
|
|
forceInjectHeaders: true, |
|
|
|
|
expectHeaders: true, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
msgType: remoteapi.WriteV2MessageType, |
|
|
|
|
payload: payloadV2, |
|
|
|
|
expectHeaders: true, |
|
|
|
|
}, |
|
|
|
|
} { |
|
|
|
|
@ -1552,11 +1556,11 @@ func TestRemoteWriteHandler_ResponseStats(t *testing.T) { |
|
|
|
|
if tt.forceInjectHeaders { |
|
|
|
|
base := handler |
|
|
|
|
handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
|
|
|
|
base.ServeHTTP(w, r) |
|
|
|
|
|
|
|
|
|
// Inject response header. This simulates PRWv1 server that uses PRWv2 response headers
|
|
|
|
|
// for confirmation of samples. This is not against spec and we support it.
|
|
|
|
|
w.Header().Set(rw20WrittenSamplesHeader, fmt.Sprintf("%d", len(appendable.samples))) |
|
|
|
|
w.Header().Set(rw20WrittenSamplesHeader, "2") |
|
|
|
|
|
|
|
|
|
base.ServeHTTP(w, r) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -1565,14 +1569,9 @@ func TestRemoteWriteHandler_ResponseStats(t *testing.T) { |
|
|
|
|
// Send message and do the parse response flow.
|
|
|
|
|
c := &Client{Client: srv.Client(), urlString: srv.URL, timeout: 5 * time.Minute, writeProtoMsg: tt.msgType} |
|
|
|
|
|
|
|
|
|
payload := payloadV2 |
|
|
|
|
if tt.msgType == remoteapi.WriteV1MessageType { |
|
|
|
|
payload = payloadV1 |
|
|
|
|
} |
|
|
|
|
stats, err := c.Store(t.Context(), payload, 0) |
|
|
|
|
stats, err := c.Store(t.Context(), tt.payload, 0) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
fmt.Println(stats) |
|
|
|
|
if tt.expectHeaders { |
|
|
|
|
require.True(t, stats.Confirmed) |
|
|
|
|
require.Equal(t, len(appendable.samples), stats.Samples) |
|
|
|
|
|