-
Notifications
You must be signed in to change notification settings - Fork 23
/
transaction.pb.json.go
108 lines (99 loc) · 3.27 KB
/
transaction.pb.json.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// Licensed to Elasticsearch B.V. under one or more contributor
// license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright
// ownership. Elasticsearch B.V. licenses this file to you under
// the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package modeljson
import (
"time"
modeljson "github.com/elastic/apm-data/model/modeljson/internal"
"github.com/elastic/apm-data/model/modelpb"
)
func TransactionModelJSON(e *modelpb.Transaction, out *modeljson.Transaction, metricset bool) {
*out = modeljson.Transaction{
ID: e.Id,
Type: e.Type,
Name: e.Name,
Result: e.Result,
Sampled: e.Sampled,
Root: e.Root,
RepresentativeCount: e.RepresentativeCount,
ProfilerStackTraceIds: e.ProfilerStackTraceIds,
}
if e.Custom != nil {
updateFields(e.Custom)
out.Custom = e.Custom
}
if n := len(e.Marks); n > 0 {
marks := make(map[string]map[string]float64, n)
for k, mark := range e.Marks {
sanitizedMark := make(map[string]float64, len(mark.Measurements))
for k, v := range mark.Measurements {
sanitizedMark[sanitizeLabelKey(k)] = v
}
marks[sanitizeLabelKey(k)] = sanitizedMark
}
out.Marks = marks
}
if e.Message != nil {
var message modeljson.Message
MessageModelJSON(e.Message, &message)
out.Message = &message
}
if e.UserExperience != nil {
var userExperience modeljson.UserExperience
UserExperienceModelJSON(e.UserExperience, &userExperience)
out.UserExperience = &userExperience
}
if metricset {
// DroppedSpansStats is only indexed for metric documents, never for events.
if n := len(e.DroppedSpansStats); n > 0 {
droppedSpansStats := make([]modeljson.DroppedSpanStats, n)
for i, dss := range e.DroppedSpansStats {
dssJson := modeljson.DroppedSpanStats{
DestinationServiceResource: dss.DestinationServiceResource,
ServiceTargetType: dss.ServiceTargetType,
ServiceTargetName: dss.ServiceTargetName,
Outcome: dss.Outcome,
}
if dss.Duration != nil {
dssJson.Duration = modeljson.AggregatedDuration{
Count: dss.Duration.Count,
Sum: time.Duration(dss.Duration.Sum),
}
}
droppedSpansStats[i] = dssJson
}
out.DroppedSpansStats = droppedSpansStats
}
}
if e.DurationHistogram != nil {
out.DurationHistogram = modeljson.Histogram{
Values: e.DurationHistogram.Values,
Counts: e.DurationHistogram.Counts,
}
}
if e.DurationSummary != nil {
out.DurationSummary = modeljson.SummaryMetric{
Count: e.DurationSummary.Count,
Sum: e.DurationSummary.Sum,
}
}
if e.SpanCount != nil {
out.SpanCount = modeljson.SpanCount{
Dropped: e.SpanCount.Dropped,
Started: e.SpanCount.Started,
}
}
}