Skip to content

Commit ee9a5a4

Browse files
committed
tests(daemon): Improves log labels ingest unit tests
1 parent 467c8a2 commit ee9a5a4

File tree

1 file changed

+46
-69
lines changed

1 file changed

+46
-69
lines changed

daemon/internal/newrelic/log_events_test.go

Lines changed: 46 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,27 @@ import (
99
"testing"
1010
)
1111

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+
1233
// LogEvents is a wrapper over AnalyticsEvents created for additional type
1334
// There are already unit tests for AnalyticsEvents in analytics_events_test.go
1435
// These tests will focus on the methods specific to LogEvents
@@ -48,76 +69,32 @@ func TestAddEventFromData(t *testing.T) {
4869
}
4970

5071
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]
10372

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+
}
12198
}
12299
}
123100

0 commit comments

Comments
 (0)