* use common traceID context value for opentracing and opentelemetry
* support sampled trace IDs as well
* inject traceID into NormalResponse on errors
* Finally the test passed
* fix the test
* fix linter
* change the function parameter
Co-authored-by: Ying WANG <ying.wang@grafana.com>
(cherry picked from commit 41012af997)
Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
This commit is contained in:
co-authored by
Serge Zaitsev
parent
a0ff246fcb
commit
c8327d04a8
+11
-15
@@ -1,6 +1,7 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
@@ -146,13 +147,11 @@ func TestGetUserFromLDAPAPIEndpoint_OrgNotfound(t *testing.T) {
|
||||
|
||||
require.Equal(t, http.StatusBadRequest, sc.resp.Code)
|
||||
|
||||
expected := `
|
||||
{
|
||||
"error": "unable to find organization with ID '2'",
|
||||
"message": "An organization was not found - Please verify your LDAP configuration"
|
||||
}
|
||||
`
|
||||
assert.JSONEq(t, expected, sc.resp.Body.String())
|
||||
var res map[string]interface{}
|
||||
err := json.Unmarshal(sc.resp.Body.Bytes(), &res)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "unable to find organization with ID '2'", res["error"])
|
||||
assert.Equal(t, "An organization was not found - Please verify your LDAP configuration", res["message"])
|
||||
}
|
||||
|
||||
func TestGetUserFromLDAPAPIEndpoint(t *testing.T) {
|
||||
@@ -470,14 +469,11 @@ func TestPostSyncUserWithLDAPAPIEndpoint_WhenGrafanaAdmin(t *testing.T) {
|
||||
}, &sqlstoremock)
|
||||
assert.Equal(t, http.StatusBadRequest, sc.resp.Code)
|
||||
|
||||
expected := `
|
||||
{
|
||||
"error": "did not find a user",
|
||||
"message": "Refusing to sync grafana super admin \"ldap-daniel\" - it would be disabled"
|
||||
}
|
||||
`
|
||||
|
||||
assert.JSONEq(t, expected, sc.resp.Body.String())
|
||||
var res map[string]interface{}
|
||||
err := json.Unmarshal(sc.resp.Body.Bytes(), &res)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "did not find a user", res["error"])
|
||||
assert.Equal(t, "Refusing to sync grafana super admin \"ldap-daniel\" - it would be disabled", res["message"])
|
||||
}
|
||||
|
||||
func TestPostSyncUserWithLDAPAPIEndpoint_WhenUserNotInLDAP(t *testing.T) {
|
||||
|
||||
+17
-24
@@ -2,6 +2,7 @@ package api
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strconv"
|
||||
@@ -241,15 +242,14 @@ func TestAPIEndpoint_Metrics_QueryMetricsFromDashboard(t *testing.T) {
|
||||
strings.NewReader(queryDatasourceInput),
|
||||
t,
|
||||
)
|
||||
|
||||
assert.Equal(t, http.StatusBadRequest, response.Code)
|
||||
assert.JSONEq(
|
||||
t,
|
||||
fmt.Sprintf(
|
||||
"{\"error\":\"%[1]s\",\"message\":\"%[1]s\"}",
|
||||
models.ErrDashboardOrPanelIdentifierNotSet,
|
||||
),
|
||||
response.Body.String(),
|
||||
)
|
||||
|
||||
var res map[string]interface{}
|
||||
err := json.Unmarshal(response.Body.Bytes(), &res)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, models.ErrDashboardOrPanelIdentifierNotSet.Error(), res["error"])
|
||||
assert.Equal(t, models.ErrDashboardOrPanelIdentifierNotSet.Error(), res["message"])
|
||||
})
|
||||
|
||||
t.Run("Cannot query without a valid orgid", func(t *testing.T) {
|
||||
@@ -261,14 +261,10 @@ func TestAPIEndpoint_Metrics_QueryMetricsFromDashboard(t *testing.T) {
|
||||
t,
|
||||
)
|
||||
assert.Equal(t, http.StatusBadRequest, response.Code)
|
||||
assert.JSONEq(
|
||||
t,
|
||||
fmt.Sprintf(
|
||||
"{\"error\":\"%[1]s\",\"message\":\"%[1]s\"}",
|
||||
models.ErrDashboardOrPanelIdentifierNotSet,
|
||||
),
|
||||
response.Body.String(),
|
||||
)
|
||||
var res map[string]interface{}
|
||||
assert.NoError(t, json.Unmarshal(response.Body.Bytes(), &res))
|
||||
assert.Equal(t, models.ErrDashboardOrPanelIdentifierNotSet.Error(), res["error"])
|
||||
assert.Equal(t, models.ErrDashboardOrPanelIdentifierNotSet.Error(), res["message"])
|
||||
})
|
||||
|
||||
t.Run("Cannot query without a valid dashboard or panel ID", func(t *testing.T) {
|
||||
@@ -280,14 +276,11 @@ func TestAPIEndpoint_Metrics_QueryMetricsFromDashboard(t *testing.T) {
|
||||
t,
|
||||
)
|
||||
assert.Equal(t, http.StatusBadRequest, response.Code)
|
||||
assert.JSONEq(
|
||||
t,
|
||||
fmt.Sprintf(
|
||||
"{\"error\":\"%[1]s\",\"message\":\"%[1]s\"}",
|
||||
models.ErrDashboardOrPanelIdentifierNotSet,
|
||||
),
|
||||
response.Body.String(),
|
||||
)
|
||||
|
||||
var res map[string]interface{}
|
||||
assert.NoError(t, json.Unmarshal(response.Body.Bytes(), &res))
|
||||
assert.Equal(t, models.ErrDashboardOrPanelIdentifierNotSet.Error(), res["error"])
|
||||
assert.Equal(t, models.ErrDashboardOrPanelIdentifierNotSet.Error(), res["message"])
|
||||
})
|
||||
|
||||
t.Run("Cannot query when ValidatedQueries is disabled", func(t *testing.T) {
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
jsoniter "github.com/json-iterator/go"
|
||||
@@ -73,7 +74,15 @@ func (r *NormalResponse) ErrMessage() string {
|
||||
|
||||
func (r *NormalResponse) WriteTo(ctx *models.ReqContext) {
|
||||
if r.err != nil {
|
||||
ctx.Logger.Error(r.errMessage, "error", r.err, "remote_addr", ctx.RemoteAddr())
|
||||
v := map[string]interface{}{}
|
||||
traceID := tracing.TraceIDFromContext(ctx.Req.Context(), false)
|
||||
if err := json.Unmarshal(r.body.Bytes(), &v); err == nil {
|
||||
v["traceID"] = traceID
|
||||
if b, err := json.Marshal(v); err == nil {
|
||||
r.body = bytes.NewBuffer(b)
|
||||
}
|
||||
}
|
||||
ctx.Logger.Error(r.errMessage, "error", r.err, "remote_addr", ctx.RemoteAddr(), "traceID", traceID)
|
||||
}
|
||||
|
||||
header := ctx.Resp.Header()
|
||||
|
||||
Reference in New Issue
Block a user