/
mappers.go
67 lines (57 loc) · 1.85 KB
/
mappers.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
package insights
import (
"errors"
"fmt"
"github.com/ChipArtem/k6/cloudapi/insights/proto/v1/ingester"
"github.com/ChipArtem/k6/cloudapi/insights/proto/v1/k6"
)
func newBatchCreateRequestMetadatasRequest(
requestMetadatas RequestMetadatas,
) (*ingester.BatchCreateRequestMetadatasRequest, error) {
reqs := make([]*ingester.CreateRequestMetadataRequest, 0, len(requestMetadatas))
for _, rm := range requestMetadatas {
req, err := newCreateRequestMetadataRequest(rm)
if err != nil {
return nil, fmt.Errorf("failed to create request metadata request: %w", err)
}
reqs = append(reqs, req)
}
return &ingester.BatchCreateRequestMetadatasRequest{
Requests: reqs,
}, nil
}
func newCreateRequestMetadataRequest(requestMetadata RequestMetadata) (*ingester.CreateRequestMetadataRequest, error) {
rm := &k6.RequestMetadata{
TraceID: requestMetadata.TraceID,
StartTimeUnixNano: requestMetadata.Start.UnixNano(),
EndTimeUnixNano: requestMetadata.End.UnixNano(),
TestRunLabels: &k6.TestRunLabels{
ID: requestMetadata.TestRunLabels.ID,
Scenario: requestMetadata.TestRunLabels.Scenario,
Group: requestMetadata.TestRunLabels.Group,
},
ProtocolLabels: nil,
}
if err := setProtocolLabels(rm, requestMetadata.ProtocolLabels); err != nil {
return nil, fmt.Errorf("failed to set protocol labels: %w", err)
}
return &ingester.CreateRequestMetadataRequest{
RequestMetadata: rm,
}, nil
}
func setProtocolLabels(rm *k6.RequestMetadata, labels ProtocolLabels) error {
// TODO(lukasz, other-proto-support): Set other protocol labels.
switch l := labels.(type) {
case ProtocolHTTPLabels:
rm.ProtocolLabels = &k6.RequestMetadata_HTTPLabels{
HTTPLabels: &k6.HTTPLabels{
Url: l.URL,
Method: l.Method,
StatusCode: l.StatusCode,
},
}
default:
return errors.New("unknown protocol labels type")
}
return nil
}