@@ -9,6 +9,27 @@ import (
9
9
"testing"
10
10
)
11
11
12
+ type LogForwardingLabelsTestCase struct {
13
+ name string
14
+ labels string
15
+ expected string
16
+ }
17
+
18
+ var (
19
+ logForwardingLabelsTestCases = []LogForwardingLabelsTestCase {
20
+ LogForwardingLabelsTestCase {name : "Valid JSON" ,
21
+ labels : `[{"label_type":"type1","label_value":"value1"},{"label_type":"type2","label_value":"value2"}]` ,
22
+ expected : `{"tags.type1":"value1","tags.type2":"value2"}` },
23
+ LogForwardingLabelsTestCase {name : "Invalid JSON" , labels : `NOT VALID JSON` , expected : `{}` },
24
+ LogForwardingLabelsTestCase {name : "Empty labels 1" , labels : `` , expected : `{}` },
25
+ LogForwardingLabelsTestCase {name : "Empty labels 2" , labels : `[]` , expected : `{}` },
26
+ LogForwardingLabelsTestCase {name : "Empty labels 3" , labels : `[{}]` , expected : `{}` },
27
+ LogForwardingLabelsTestCase {name : "Invalid keys" , labels : `[{"label_tipe":"type1","label_valyue":"value1"}]` , expected : `{}` },
28
+ LogForwardingLabelsTestCase {name : "Space in value" , labels : `[{"label_type":"type1","label_value":"value 1"}]` , expected : `{"tags.type1":"value 1"}` },
29
+ LogForwardingLabelsTestCase {name : "Space in key" , labels : `[{"label_type":"type 1","label_value":"value1"}]` , expected : `{"tags.type 1":"value1"}` },
30
+ }
31
+ )
32
+
12
33
// LogEvents is a wrapper over AnalyticsEvents created for additional type
13
34
// There are already unit tests for AnalyticsEvents in analytics_events_test.go
14
35
// These tests will focus on the methods specific to LogEvents
@@ -48,76 +69,32 @@ func TestAddEventFromData(t *testing.T) {
48
69
}
49
70
50
71
func TestSetLogForwardingLabels (t * testing.T ) {
51
- events := NewLogEvents (10 )
52
- id := AgentRunID (`12345` )
53
- log_data := []byte (`{"message":"test log event"}` )
54
- label_data := []byte (`[{"label_type":"type1","label_value":"value1"},{"label_type":"type2","label_value":"value2"}]` )
55
- priority := SamplingPriority (0.5 )
56
-
57
- events .AddEventFromData (log_data , priority )
58
- events .SetLogForwardingLabels (label_data )
59
-
60
- if events .analyticsEvents .events .Len () != 1 {
61
- t .Errorf ("expected 1 event, got %d" , events .analyticsEvents .events .Len ())
62
- }
63
-
64
- es := * events .analyticsEvents .events
65
- event := es [0 ]
66
-
67
- if string (event .data ) != string (log_data ) {
68
- t .Errorf ("expected event data %s, got %s" , string (log_data ), string (event .data ))
69
- }
70
-
71
- if event .priority != priority {
72
- t .Errorf ("expected event priority %f, got %f" , priority , event .priority )
73
- }
74
-
75
- json , err := events .CollectorJSON (id )
76
- if nil != err {
77
- t .Fatal (err )
78
- }
79
-
80
- expected := `[{"common": {"attributes": {"tags.type1":"value1","tags.type2":"value2"}},` +
81
- `"logs": [{"message":"test log event"}]}]`
82
- if string (json ) != expected {
83
- t .Errorf ("expected JSON %s, got %s" , expected , string (json ))
84
- }
85
- }
86
-
87
- func TestSetLogForwardingLabelsInvalidData (t * testing.T ) {
88
- events := NewLogEvents (10 )
89
- id := AgentRunID (`12345` )
90
- log_data := []byte (`{"message":"test log event"}` )
91
- label_data := []byte (`NOT VALID JSON` )
92
- priority := SamplingPriority (0.5 )
93
-
94
- events .AddEventFromData (log_data , priority )
95
- events .SetLogForwardingLabels (label_data )
96
-
97
- if events .analyticsEvents .events .Len () != 1 {
98
- t .Errorf ("expected 1 event, got %d" , events .analyticsEvents .events .Len ())
99
- }
100
-
101
- es := * events .analyticsEvents .events
102
- event := es [0 ]
103
72
104
- if string (event .data ) != string (log_data ) {
105
- t .Errorf ("expected event data %s, got %s" , string (log_data ), string (event .data ))
106
- }
107
-
108
- if event .priority != priority {
109
- t .Errorf ("expected event priority %f, got %f" , priority , event .priority )
110
- }
111
-
112
- json , err := events .CollectorJSON (id )
113
- if nil != err {
114
- t .Fatal (err )
115
- }
116
-
117
- expected := `[{"common": {"attributes": {}},` +
118
- `"logs": [{"message":"test log event"}]}]`
119
- if string (json ) != expected {
120
- t .Errorf ("expected JSON %s, got %s" , expected , string (json ))
73
+ for idx := range logForwardingLabelsTestCases {
74
+ testcase := logForwardingLabelsTestCases [idx ]
75
+ events := NewLogEvents (10 )
76
+ id := AgentRunID (`12345` )
77
+ log_data := []byte (`{"message":"test log event"}` )
78
+ label_data := []byte (testcase .labels )
79
+ priority := SamplingPriority (0.5 )
80
+
81
+ events .AddEventFromData (log_data , priority )
82
+ events .SetLogForwardingLabels (label_data )
83
+
84
+ if events .analyticsEvents .events .Len () != 1 {
85
+ t .Errorf ("%s: expected 1 event, got %d" , testcase .name , events .analyticsEvents .events .Len ())
86
+ }
87
+
88
+ json , err := events .CollectorJSON (id )
89
+ if nil != err {
90
+ t .Fatal (err )
91
+ }
92
+
93
+ expected := `[{"common": {"attributes": ` + testcase .expected + `},` +
94
+ `"logs": [{"message":"test log event"}]}]`
95
+ if string (json ) != expected {
96
+ t .Errorf ("%s: expected JSON %s, got %s" , testcase .name , expected , string (json ))
97
+ }
121
98
}
122
99
}
123
100
0 commit comments