mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
4b3a207705
- Call httpserver.GetQuotedRemoteAddr() and httpserver.GetRequestURI() only when the error occurs. This saves CPU time on fast path when there are no parsing errors. - Create a helper function - httpserver.LogError() - for logging the error with the request uri and remote addr context.
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package prometheusimport
|
|
|
|
import (
|
|
"bytes"
|
|
"flag"
|
|
"log"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/app/vmagent/remotewrite"
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/logger"
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/protoparser/common"
|
|
)
|
|
|
|
var (
|
|
srv *httptest.Server
|
|
testOutput *bytes.Buffer
|
|
)
|
|
|
|
func TestInsertHandler(t *testing.T) {
|
|
setUp()
|
|
defer tearDown()
|
|
req := httptest.NewRequest("POST", "/insert/0/api/v1/import/prometheus", bytes.NewBufferString(`{"foo":"bar"}
|
|
go_memstats_alloc_bytes_total 1`))
|
|
if err := InsertHandler(nil, req); err != nil {
|
|
t.Errorf("unxepected error %s", err)
|
|
}
|
|
expectedMsg := "cannot unmarshal Prometheus line"
|
|
if !strings.Contains(testOutput.String(), expectedMsg) {
|
|
t.Errorf("output %q should contain %q", testOutput.String(), expectedMsg)
|
|
}
|
|
}
|
|
|
|
func setUp() {
|
|
srv = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
|
w.WriteHeader(204)
|
|
}))
|
|
flag.Parse()
|
|
remoteWriteFlag := "remoteWrite.url"
|
|
if err := flag.Lookup(remoteWriteFlag).Value.Set(srv.URL); err != nil {
|
|
log.Fatalf("unable to set %q with value %q, err: %v", remoteWriteFlag, srv.URL, err)
|
|
}
|
|
logger.Init()
|
|
common.StartUnmarshalWorkers()
|
|
remotewrite.Init()
|
|
testOutput = &bytes.Buffer{}
|
|
logger.SetOutputForTests(testOutput)
|
|
}
|
|
|
|
func tearDown() {
|
|
common.StopUnmarshalWorkers()
|
|
srv.Close()
|
|
logger.ResetOutputForTest()
|
|
}
|