Skip to content

Commit

Permalink
assortment of fixes and code review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
jalvz committed Mar 12, 2020
1 parent 7854c89 commit f55c541
Show file tree
Hide file tree
Showing 19 changed files with 120 additions and 74 deletions.
16 changes: 6 additions & 10 deletions docs/data/intake-api/generated/rum_v3_events.ndjson
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
{"m":{"se":{"n":"apm-a-rum-test-e2e-general-usecase","ve":"0.0.1","a":{"n":"js-base","ve":"4.8.1"},"la":{"n":"javascript"}},"l":{"testTagKey":"testTagValue"}}}
{"x":{"id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"general-usecase-initial-p-load","t":"p-load","d":295,"c":{"p":{"rf":"h://localhost:8000/test/e2e/","url":"h://localhost:8000/test/e2e/general-usecase/"},"r":{"ts":983,"ebs":690,"dbs":690},"u":{"id":"uId","un":"un","em":"em"},"cu":{"testContext":"testContext"},"g":{"testTagKey":"testTagValue"}},"k":{"a":{"lp":131.03000004775822,"fb":5,"di":120,"dc":138,"fp":70.82500003930181},"nt":{"fs":0,"ls":0,"le":0,"cs":0,"ce":0,"qs":4,"rs":5,"re":6,"dl":14,"di":120,"ds":120,"de":122,"dc":138,"es":138,"ee":138}},"yc":{"sd":8},"sm":true}}
{"x":{"id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"general-usecase-initial-p-load","t":"p-load","d":295,"c":{"p":{"rf":"http://localhost:8000/test/e2e/","url":"http://localhost:8000/test/e2e/general-usecase/"},"r":{"ts":983,"ebs":690,"dbs":690},"u":{"id":"uId","un":"un","em":"em"},"cu":{"testContext":"testContext"},"g":{"testTagKey":"testTagValue"}},"k":{"a":{"lp":131.03000004775822,"fb":5,"di":120,"dc":138,"fp":70.82500003930181},"nt":{"fs":0,"ls":0,"le":0,"cs":0,"ce":0,"qs":4,"rs":5,"re":6,"dl":14,"di":120,"ds":120,"de":122,"dc":138,"es":138,"ee":138}},"yc":{"sd":8},"sm":true}}
{"y":{"id":"bbd8bcc3be14d814","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"Requesting and receiving the document","t":"hard-navigation","su":"browser-timing","s":4,"d":2}}
{"y":{"id":"fc546e87a90a774f","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"Parsing the document, executing sy. scripts","t":"hard-navigation","su":"browser-timing","s":14,"d":106}}
{"y":{"id":"fb8f717930697299","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"h://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js","t":"rc","su":"script","s":22.53499999642372,"d":35.060000023804605,"c":{"h":{"url":"h://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=REDACTED","r":{"ts":677175,"ebs":676864,"dbs":676864}},"dt":{"se":{"n":"h://localhost:8000","rc":"localhost:8000","t":"rc"},"ad":"localhost","po":8000}}}}
{"y":{"id":"fb8f717930697299","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js","t":"rc","su":"script","s":22.53499999642372,"d":35.060000023804605,"c":{"h":{"url":"http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=REDACTED","r":{"ts":677175,"ebs":676864,"dbs":676864}},"dt":{"se":{"n":"http://localhost:8000","rc":"localhost:8000","t":"rc"},"ad":"localhost","po":8000}}}}
{"y":{"id":"9b80535c4403c9fb","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"OpenTracing y","t":"cu","s":96.92999999970198,"d":198.07000000029802}}
{"y":{"id":"5ecb8ee030749715","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"GET /test/e2e/common/data.json","t":"external","su":"h","sy":true,"s":98.94000005442649,"d":6.72499998472631,"c":{"h":{"mt":"GET","url":"h://localhost:8000/test/e2e/common/data.json?test=hamid","sc":200},"dt":{"se":{"n":"h://localhost:8000","rc":"localhost:8000","t":"external"},"ad":"localhost","po":8000}}}}
{"y":{"id":"27f45fd274f976d4","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"POST h://localhost:8003/data","t":"external","su":"h","sy":true,"s":106.52000003028661,"d":11.584999971091747,"c":{"h":{"mt":"POST","url":"h://localhost:8003/data","sc":200},"dt":{"se":{"n":"h://localhost:8003","rc":"localhost:8003","t":"external"},"ad":"localhost","po":8003}}}}
{"y":{"id":"a3c043330bc2015e","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"POST h://localhost:8003/fetch","t":"external","su":"h","sy":false,"s":119.93500008247793,"d":15.949999913573265,"c":{"h":{"mt":"POST","url":"h://localhost:8003/fetch","sc":200},"dt":{"se":{"n":"h://localhost:8003","rc":"localhost:8003","t":"external"},"ad":"localhost","po":8003}}}}
{"y":{"id":"bc7665dc25629379","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"Fire \"DOMContentLoaded\" event","t":"hard-navigation","su":"browser-timing","s":120,"d":2}}
{"me":{"x":{"n":"general-usecase-initial-p-load","t":"p-load"},"sa":{"xdc":{"v":1},"xds":{"v":295},"xbc":{"v":1}}}}
{"me":{"x":{"n":"general-usecase-initial-p-load","t":"p-load"},"y":{"t":"Request"},"sa":{"ysc":{"v":1},"yss":{"v":1}}}}
{"me":{"x":{"n":"general-usecase-initial-p-load","t":"p-load"},"y":{"t":"Response"},"sa":{"ysc":{"v":1},"yss":{"v":1}}}}
{"me":{"x":{"n":"general-usecase-initial-p-load","t":"p-load"},"y":{"t":"Processing"},"sa":{"ysc":{"v":1},"yss":{"v":124}}}}
{"y":{"id":"5ecb8ee030749715","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"GET /test/e2e/common/data.json","t":"external","su":"h","sy":true,"s":98.94000005442649,"d":6.72499998472631,"c":{"h":{"mt":"GET","url":"http://localhost:8000/test/e2e/common/data.json?test=hamid","sc":200},"dt":{"se":{"n":"http://localhost:8000","rc":"localhost:8000","t":"external"},"ad":"localhost","po":8000}}}}
{"y":{"id":"27f45fd274f976d4","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"POST http://localhost:8003/data","t":"external","su":"h","sy":true,"s":106.52000003028661,"d":11.584999971091747,"c":{"h":{"mt":"POST","url":"http://localhost:8003/data","sc":200},"dt":{"se":{"n":"http://localhost:8003","rc":"localhost:8003","t":"external"},"ad":"localhost","po":8003}}}}
{"y":{"id":"a3c043330bc2015e","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1","n":"POST http://localhost:8003/fetch","t":"external","su":"h","sy":false,"s":119.93500008247793,"d":15.949999913573265,"c":{"h":{"mt":"POST","url":"http://localhost:8003/fetch","sc":200},"dt":{"se":{"n":"http://localhost:8003","rc":"localhost:8003","t":"external"},"ad":"localhost","po":8003}}}}
{"y":{"id":"bc7665dc25629379","x_id":"ec2e280be8345240","parent_id":"ec2e280be8345240","trace_id":"286ac3ad697892c406528f13c82e0ce1", "st":[{"ap":"http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret","f":"test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret","fn":"generateError","li":7662,"co":9},{"ap":"http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret","f":"test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret","fn":"<anonymous>","li":7666,"co":3}], "n":"Fire \"DOMContentLoaded\" event","t":"hard-navigation","su":"browser-timing","s":120,"d":2}}
14 changes: 7 additions & 7 deletions model/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import (
"strconv"
"strings"

"github.com/elastic/apm-server/model/fields"
"github.com/elastic/apm-server/model/field"

"github.com/elastic/apm-server/model/metadata"

Expand Down Expand Up @@ -125,7 +125,7 @@ func DecodeContext(input interface{}, cfg Config, err error) (*Context, error) {
}

decoder := utility.ManualDecoder{}
field := fields.Mapper(cfg.HasShortFieldNames)
field := field.Mapper(cfg.HasShortFieldNames)

ctxInp := decoder.MapStr(raw, field("context"))
if ctxInp == nil {
Expand Down Expand Up @@ -314,7 +314,7 @@ func decodeHTTP(raw common.MapStr, hasShortFieldNames bool, err error) (*Http, e
}
var h *Http
decoder := utility.ManualDecoder{}
field := fields.Mapper(hasShortFieldNames)
field := field.Mapper(hasShortFieldNames)

inpReq := decoder.MapStr(raw, field("request"))
if inpReq != nil {
Expand Down Expand Up @@ -358,7 +358,7 @@ func DecodeMinimalHTTPResponse(raw common.MapStr, hasShortFieldNames bool, err e
return nil, err
}
decoder := utility.ManualDecoder{}
field := fields.Mapper(hasShortFieldNames)
field := field.Mapper(hasShortFieldNames)

inpResp := decoder.MapStr(raw, field("response"))
if inpResp == nil {
Expand All @@ -378,7 +378,7 @@ func decodePage(raw common.MapStr, hasShortFieldNames bool, err error) (*Page, e
if err != nil {
return nil, err
}
field := fields.Mapper(hasShortFieldNames)
field := field.Mapper(hasShortFieldNames)
pageInput, ok := raw[field("page")].(map[string]interface{})
if !ok {
return nil, nil
Expand All @@ -394,7 +394,7 @@ func decodeLabels(raw common.MapStr, hasShortFieldNames bool, err error) (*Label
if err != nil {
return nil, err
}
field := fields.Mapper(hasShortFieldNames)
field := field.Mapper(hasShortFieldNames)
decoder := utility.ManualDecoder{}
if l := decoder.MapStr(raw, field("tags")); decoder.Err == nil && l != nil {
labels := Labels(l)
Expand All @@ -408,7 +408,7 @@ func decodeCustom(raw common.MapStr, hasShortFieldNames bool, err error) (*Custo
return nil, err
}
decoder := utility.ManualDecoder{}
field := fields.Mapper(hasShortFieldNames)
field := field.Mapper(hasShortFieldNames)
if c := decoder.MapStr(raw, field("custom")); decoder.Err == nil && c != nil {
custom := Custom(c)
return &custom, nil
Expand Down
21 changes: 11 additions & 10 deletions model/error/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import (
"strconv"
"time"

"github.com/elastic/apm-server/model/fields"
"github.com/elastic/apm-server/model/field"

"github.com/santhosh-tekuri/jsonschema"

Expand Down Expand Up @@ -140,7 +140,7 @@ func DecodeEvent(input interface{}, cfg m.Config, err error) (transform.Transfor
return nil, err
}
decoder := utility.ManualDecoder{}
field := fields.Mapper(cfg.HasShortFieldNames)
field := field.Mapper(cfg.HasShortFieldNames)
e := Event{
Id: decoder.StringPtr(raw, "id"),
Culprit: decoder.StringPtr(raw, field("culprit")),
Expand Down Expand Up @@ -428,27 +428,28 @@ type exceptionDecoder func(map[string]interface{}) *Exception

func decodeException(decoder *utility.ManualDecoder, hasShortFieldNames bool) exceptionDecoder {
var decode exceptionDecoder
field := field.Mapper(hasShortFieldNames)
decode = func(exceptionTree map[string]interface{}) *Exception {
exMsg := decoder.StringPtr(exceptionTree, "message")
exType := decoder.StringPtr(exceptionTree, "type")
exMsg := decoder.StringPtr(exceptionTree, field("message"))
exType := decoder.StringPtr(exceptionTree, field("type"))
if decoder.Err != nil || (exMsg == nil && exType == nil) {
return nil
}
ex := Exception{
Message: exMsg,
Type: exType,
Code: decoder.Interface(exceptionTree, "code"),
Module: decoder.StringPtr(exceptionTree, "module"),
Attributes: decoder.Interface(exceptionTree, "attributes"),
Handled: decoder.BoolPtr(exceptionTree, "handled"),
Code: decoder.Interface(exceptionTree, field("code")),
Module: decoder.StringPtr(exceptionTree, field("module")),
Attributes: decoder.Interface(exceptionTree, field("attributes")),
Handled: decoder.BoolPtr(exceptionTree, field("handled")),
Stacktrace: m.Stacktrace{},
}
var stacktrace *m.Stacktrace
stacktrace, decoder.Err = m.DecodeStacktrace(exceptionTree["stacktrace"], hasShortFieldNames, decoder.Err)
stacktrace, decoder.Err = m.DecodeStacktrace(exceptionTree[field("stacktrace")], hasShortFieldNames, decoder.Err)
if stacktrace != nil {
ex.Stacktrace = *stacktrace
}
for _, cause := range decoder.InterfaceArr(exceptionTree, "cause") {
for _, cause := range decoder.InterfaceArr(exceptionTree, field("cause")) {
e, ok := cause.(map[string]interface{})
if !ok {
decoder.Err = errors.New("cause must be an exception")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
// specific language governing permissions and limitations
// under the License.

package fields
package field

var rumV3Mapping = map[string]string{
"abs_path": "ap",
Expand Down
4 changes: 2 additions & 2 deletions model/metadata/metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ package metadata
import (
"errors"

"github.com/elastic/apm-server/model/fields"
"github.com/elastic/apm-server/model/field"

"github.com/santhosh-tekuri/jsonschema"

Expand Down Expand Up @@ -60,7 +60,7 @@ func DecodeMetadata(input interface{}, hasShortFieldNames bool) (*Metadata, erro
return nil, errors.New("invalid type for metadata")
}

field := fields.Mapper(hasShortFieldNames)
field := field.Mapper(hasShortFieldNames)

var err error
var service *Service
Expand Down
4 changes: 2 additions & 2 deletions model/metadata/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ package metadata
import (
"errors"

"github.com/elastic/apm-server/model/fields"
"github.com/elastic/apm-server/model/field"

"github.com/elastic/beats/v7/libbeat/common"

Expand Down Expand Up @@ -77,7 +77,7 @@ func DecodeService(input interface{}, hasShortFieldNames bool, err error) (*Serv
if !ok {
return nil, errors.New("invalid type for service")
}
field := fields.Mapper(hasShortFieldNames)
field := field.Mapper(hasShortFieldNames)
decoder := utility.ManualDecoder{}
service := Service{
Name: decoder.StringPtr(raw, field("name")),
Expand Down
4 changes: 2 additions & 2 deletions model/metadata/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (
"errors"
"net"

"github.com/elastic/apm-server/model/fields"
"github.com/elastic/apm-server/model/field"

"github.com/elastic/beats/v7/libbeat/common"

Expand All @@ -46,7 +46,7 @@ func DecodeUser(input interface{}, hasShortFieldNames bool, err error) (*User, e
return nil, errors.New("invalid type for user")
}
decoder := utility.ManualDecoder{}
field := fields.Mapper(hasShortFieldNames)
field := field.Mapper(hasShortFieldNames)
user := User{
UserAgent: decoder.StringPtr(raw, "user-agent"),
Name: decoder.StringPtr(raw, field("username")),
Expand Down
8 changes: 4 additions & 4 deletions model/span/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import (
"github.com/elastic/beats/v7/libbeat/monitoring"

m "github.com/elastic/apm-server/model"
"github.com/elastic/apm-server/model/fields"
"github.com/elastic/apm-server/model/field"
"github.com/elastic/apm-server/model/metadata"
"github.com/elastic/apm-server/model/span/generated/schema"
"github.com/elastic/apm-server/transform"
Expand Down Expand Up @@ -173,7 +173,7 @@ func decodeHTTP(input interface{}, hasShortFieldNames bool, err error) (*HTTP, e
return nil, errors.New("invalid type for http")
}
decoder := utility.ManualDecoder{}
field := fields.Mapper(hasShortFieldNames)
field := field.Mapper(hasShortFieldNames)
httpInput := decoder.MapStr(raw, field("http"))
if decoder.Err != nil || httpInput == nil {
return nil, decoder.Err
Expand Down Expand Up @@ -223,7 +223,7 @@ func decodeDestination(input interface{}, hasShortFieldNames bool, err error) (*
if !ok {
return nil, nil, errors.New("invalid type for destination")
}
field := fields.Mapper(hasShortFieldNames)
field := field.Mapper(hasShortFieldNames)
decoder := utility.ManualDecoder{}
destinationInput := decoder.MapStr(raw, field("destination"))
if decoder.Err != nil || destinationInput == nil {
Expand Down Expand Up @@ -291,7 +291,7 @@ func DecodeEvent(input interface{}, cfg m.Config, err error) (transform.Transfor
if !ok {
return nil, errInvalidType
}
field := fields.Mapper(cfg.HasShortFieldNames)
field := field.Mapper(cfg.HasShortFieldNames)
decoder := utility.ManualDecoder{}
event := Event{
Name: decoder.String(raw, field("name")),
Expand Down
4 changes: 2 additions & 2 deletions model/stacktrace_frame.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (
"fmt"
"regexp"

"github.com/elastic/apm-server/model/fields"
"github.com/elastic/apm-server/model/field"

"github.com/pkg/errors"

Expand Down Expand Up @@ -90,7 +90,7 @@ func DecodeStacktraceFrame(input interface{}, hasShortFieldNames bool, err error
return nil, errInvalidStacktraceFrameType
}
decoder := utility.ManualDecoder{}
field := fields.Mapper(hasShortFieldNames)
field := field.Mapper(hasShortFieldNames)
frame := StacktraceFrame{
AbsPath: decoder.StringPtr(raw, field("abs_path")),
Filename: decoder.StringPtr(raw, field("filename")),
Expand Down
4 changes: 2 additions & 2 deletions model/transaction/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ package transaction
import (
"time"

"github.com/elastic/apm-server/model/fields"
"github.com/elastic/apm-server/model/field"

"github.com/pkg/errors"
"github.com/santhosh-tekuri/jsonschema"
Expand Down Expand Up @@ -111,7 +111,7 @@ func DecodeEvent(input interface{}, cfg m.Config, err error) (transform.Transfor
return nil, err
}
decoder := utility.ManualDecoder{}
field := fields.Mapper(cfg.HasShortFieldNames)
field := field.Mapper(cfg.HasShortFieldNames)
e := Event{
Id: decoder.String(raw, "id"),
Type: decoder.String(raw, field("type")),
Expand Down
2 changes: 1 addition & 1 deletion processor/stream/package_tests/error_attrs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ func errorKeywordExceptionKeys() *tests.Set {
tests.Group("url"),
tests.Group("http"),
tests.Group("destination"),
// metadata fields
// metadata field
tests.Group("agent"),
tests.Group("container"),
tests.Group("host"),
Expand Down
2 changes: 1 addition & 1 deletion processor/stream/package_tests/metadata_attrs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ func getMetadataEventAttrs(t *testing.T, prefix string) *tests.Set {

eventFields := tests.NewSet()
tests.FlattenMapStr(contextMetadata, prefix, nil, eventFields)
t.Logf("Event fields: %s", eventFields)
t.Logf("Event field: %s", eventFields)
return eventFields
}

Expand Down
4 changes: 2 additions & 2 deletions processor/stream/processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"sync"
"time"

"github.com/elastic/apm-server/model/fields"
"github.com/elastic/apm-server/model/field"

"github.com/elastic/apm-server/beater/config"

Expand Down Expand Up @@ -193,7 +193,7 @@ func (p *Processor) readMetadata(reqMeta map[string]interface{}, reader StreamRe
return nil, err
}

field := fields.Mapper(p.Mconfig.HasShortFieldNames)
field := field.Mapper(p.Mconfig.HasShortFieldNames)
rawMetadata, ok := rawModel[field("metadata")].(map[string]interface{})
if !ok {
return nil, &Error{
Expand Down
2 changes: 1 addition & 1 deletion processor/stream/processor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ func TestRUMV3(t *testing.T) {
name string
}{
{path: "rum_errors.ndjson", name: "RUMV3Errors"},
// {path: "rum_events.ndjson", name: "RUMV3Events"},
{path: "rum_events.ndjson", name: "RUMV3Events"},
} {
t.Run(test.name, func(t *testing.T) {
b, err := loader.LoadDataAsBytes(filepath.Join("../testdata/intake-v3/", test.path))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,39 @@
"custom": {
"testContext": "testContext"
},
"grouping_key": "d41d8cd98f00b204e9800998ecf8427e",
"exception": [
{
"message": "Uncaught Error: timeout test e with a [REDACTED]",
"stacktrace": [
{
"abs_path": "http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret",
"exclude_from_grouping": false,
"filename": "test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret",
"function": "generateError",
"line": {
"column": 9,
"number": 7662
}
},
{
"abs_path": "http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret",
"exclude_from_grouping": false,
"filename": "test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret",
"function": "\u003canonymous\u003e",
"line": {
"column": 3,
"number": 7666
}
}
],
"type": "Error"
}
],
"grouping_key": "e5fa86c0df837d142aa0520eb2661d8d",
"id": "3661352868c17c78b773d2f1beae6d41",
"page": {
"referer": "h://localhost:8000/test/e2e/",
"url": "h://localhost:8000/test/e2e/general-usecase/"
"referer": "http://localhost:8000/test/e2e/",
"url": "http://localhost:8000/test/e2e/general-usecase/"
}
},
"labels": {
Expand Down
Loading

0 comments on commit f55c541

Please sign in to comment.