Skip to content

Commit 63692e4

Browse files
authored
Cleanup use of test helpers (#501)
* Cleanup use of test helpers * Update ubuntu in github actions workflow * Events too * Use just one helper for all event types * cleanup
1 parent b75d5ab commit 63692e4

22 files changed

+340
-501
lines changed

.github/workflows/elixir.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ on:
1111
jobs:
1212
unit_test:
1313
name: Unit Tests - Elixir ${{matrix.elixir}} / OTP ${{matrix.otp}}
14-
runs-on: ubuntu-20.04
14+
runs-on: ubuntu-latest
1515
continue-on-error: true
1616

1717
strategy:

examples/apps/absinthe_example/test/absinthe_example_test.exs

+8-31
Original file line numberDiff line numberDiff line change
@@ -27,39 +27,16 @@ defmodule AbsintheExampleTest do
2727
[%{spans: spans}] = TestHelper.gather_harvest(TelemetrySdk.Spans.Harvester)
2828

2929
spansaction =
30-
Enum.find(spans, fn %{attributes: attr} ->
31-
attr[:name] == "Absinthe/AbsintheExample.Schema/query/one.two.three"
32-
end)
33-
34-
tx_root_process =
35-
Enum.find(spans, fn %{attributes: attr} ->
36-
attr[:name] == "Transaction Root Process"
37-
end)
38-
39-
process =
40-
Enum.find(spans, fn %{attributes: attr} ->
41-
attr[:name] == "Process"
42-
end)
43-
44-
operation =
45-
Enum.find(spans, fn %{attributes: attr} ->
46-
attr[:name] == "Absinthe/Operation/query:TestQuery"
47-
end)
48-
49-
one_resolver =
50-
Enum.find(spans, fn %{attributes: attr} ->
51-
attr[:name] == "&AbsintheExample.Resolvers.one/3"
52-
end)
53-
54-
three_resolver =
55-
Enum.find(spans, fn %{attributes: attr} ->
56-
attr[:name] == "&AbsintheExample.Resolvers.three/3"
57-
end)
30+
TestHelper.find_event(spans, "Absinthe/AbsintheExample.Schema/query/one.two.three")
31+
32+
tx_root_process = TestHelper.find_event(spans, "Transaction Root Process")
33+
process = TestHelper.find_event(spans, "Process")
34+
operation = TestHelper.find_event(spans, "Absinthe/Operation/query:TestQuery")
35+
one_resolver = TestHelper.find_event(spans, "&AbsintheExample.Resolvers.one/3")
36+
three_resolver = TestHelper.find_event(spans, "&AbsintheExample.Resolvers.three/3")
5837

5938
do_three_fn_trace =
60-
Enum.find(spans, fn %{attributes: attr} ->
61-
attr[:name] == "AbsintheExample.Resolvers.do_three/1"
62-
end)
39+
TestHelper.find_event(spans, "AbsintheExample.Resolvers.do_three/1")
6340

6441
assert operation.attributes[:"absinthe.operation.name"] == "TestQuery"
6542
assert operation.attributes[:"absinthe.operation.type"] == "query"

examples/apps/oban_example/test/oban_example_test.exs

+22-29
Original file line numberDiff line numberDiff line change
@@ -16,31 +16,25 @@ defmodule ObanExampleTest do
1616
|> Oban.insert()
1717

1818
metrics = TestHelper.gather_harvest(Collector.Metric.Harvester)
19-
[event | _] = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
19+
events = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
2020

2121
assert TestHelper.find_metric(
2222
metrics,
2323
"OtherTransaction/Oban/default/ObanExample.Worker/perform",
2424
1
2525
)
2626

27-
assert [
28-
%{
29-
:name => "OtherTransaction/Oban/default/ObanExample.Worker/perform",
30-
:timestamp => timestamp,
31-
:duration => duration
32-
},
33-
%{
34-
:"oban.worker" => "ObanExample.Worker",
35-
:"oban.queue" => "default",
36-
:"oban.job.result" => "success",
37-
:"oban.job.tags" => "foo,bar"
38-
}
39-
] = event
27+
event =
28+
TestHelper.find_event(events, "OtherTransaction/Oban/default/ObanExample.Worker/perform")
4029

41-
assert timestamp |> is_number
42-
assert duration >= 0.015
43-
assert duration <= 0.065
30+
assert event[:timestamp] |> is_number
31+
assert event[:duration] >= 0.015
32+
assert event[:duration] <= 0.065
33+
assert event[:duration] <= 0.065
34+
assert event[:"oban.worker"] == "ObanExample.Worker"
35+
assert event[:"oban.queue"] == "default"
36+
assert event[:"oban.job.result"] == "success"
37+
assert event[:"oban.job.tags"] == "foo,bar"
4438
end
4539

4640
test "instruments a failed job" do
@@ -51,24 +45,23 @@ defmodule ObanExampleTest do
5145
|> Oban.insert()
5246

5347
metrics = TestHelper.gather_harvest(Collector.Metric.Harvester)
54-
[event | _] = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
48+
events = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
5549

5650
assert TestHelper.find_metric(
5751
metrics,
5852
"OtherTransaction/Oban/default/ObanExample.Worker/perform",
5953
1
6054
)
6155

62-
assert [
63-
%{:name => "OtherTransaction/Oban/default/ObanExample.Worker/perform"},
64-
%{
65-
:error => true,
66-
:error_kind => :error,
67-
:"oban.worker" => "ObanExample.Worker",
68-
:"oban.queue" => "default",
69-
:"oban.job.result" => "failure",
70-
:"oban.job.tags" => "foo,bar"
71-
}
72-
] = event
56+
event =
57+
TestHelper.find_event(events, "OtherTransaction/Oban/default/ObanExample.Worker/perform")
58+
59+
assert event[:timestamp] |> is_number
60+
assert event[:error] == true
61+
assert event[:error_kind] == :error
62+
assert event[:"oban.worker"] == "ObanExample.Worker"
63+
assert event[:"oban.queue"] == "default"
64+
assert event[:"oban.job.result"] == "failure"
65+
assert event[:"oban.job.tags"] == "foo,bar"
7366
end
7467
end

examples/apps/phx_example/test/phx_example_test.exs

+34-12
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,13 @@ defmodule PhxExampleTest do
2929
"WebTransaction/Phoenix/PhxExampleWeb.PageController/index"
3030
)
3131

32-
[[_, event]] = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
32+
events = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
33+
34+
event =
35+
TestHelper.find_event(
36+
events,
37+
"WebTransaction/Phoenix/PhxExampleWeb.PageController/index"
38+
)
3339

3440
if event[:"bandit.resp_duration_ms"] do
3541
assert event[:"bandit.resp_duration_ms"] > 0
@@ -64,7 +70,10 @@ defmodule PhxExampleTest do
6470
"WebTransaction/Phoenix/PhxExampleWeb.HomeLive/index"
6571
)
6672

67-
[[_, event]] = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
73+
events = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
74+
75+
event =
76+
TestHelper.find_event(events, "WebTransaction/Phoenix/PhxExampleWeb.HomeLive/index")
6877

6978
assert event[:"phoenix.endpoint"] =~ "PhxExampleWeb"
7079
assert event[:"phoenix.router"] == "PhxExampleWeb.Router"
@@ -79,9 +88,9 @@ defmodule PhxExampleTest do
7988

8089
span_events = TestHelper.gather_harvest(Collector.SpanEvent.Harvester)
8190

82-
tx_span = TestHelper.find_span(span_events, "/Phoenix/PhxExampleWeb.HomeLive/index")
83-
process_span = TestHelper.find_span(span_events, "Transaction Root Process")
84-
mount_span = TestHelper.find_span(span_events, "PhxExampleWeb.HomeLive:index.mount")
91+
tx_span = TestHelper.find_event(span_events, "/Phoenix/PhxExampleWeb.HomeLive/index")
92+
process_span = TestHelper.find_event(span_events, "Transaction Root Process")
93+
mount_span = TestHelper.find_event(span_events, "PhxExampleWeb.HomeLive:index.mount")
8594

8695
assert process_span[:parentId] == tx_span[:guid]
8796
assert mount_span[:"live_view.params"]
@@ -104,11 +113,14 @@ defmodule PhxExampleTest do
104113
span_events = TestHelper.gather_harvest(Collector.SpanEvent.Harvester)
105114

106115
tx_span =
107-
TestHelper.find_span(span_events, "/Phoenix.LiveView/Live/PhxExampleWeb.HomeLive/index")
116+
TestHelper.find_event(
117+
span_events,
118+
"/Phoenix.LiveView/Live/PhxExampleWeb.HomeLive/index"
119+
)
108120

109-
process_span = TestHelper.find_span(span_events, "Transaction Root Process")
110-
mount_span = TestHelper.find_span(span_events, "PhxExampleWeb.HomeLive:index.mount")
111-
render_span = TestHelper.find_span(span_events, "PhxExampleWeb.HomeLive:index.render")
121+
process_span = TestHelper.find_event(span_events, "Transaction Root Process")
122+
mount_span = TestHelper.find_event(span_events, "PhxExampleWeb.HomeLive:index.mount")
123+
render_span = TestHelper.find_event(span_events, "PhxExampleWeb.HomeLive:index.render")
112124

113125
assert tx_span[:"live_view.endpoint"] == "PhxExampleWeb.Endpoint"
114126

@@ -130,7 +142,13 @@ defmodule PhxExampleTest do
130142
"WebTransaction/Phoenix/PhxExampleWeb.PageController/error"
131143
)
132144

133-
[[_, event]] = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
145+
events = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
146+
147+
event =
148+
TestHelper.find_event(
149+
events,
150+
"WebTransaction/Phoenix/PhxExampleWeb.PageController/error"
151+
)
134152

135153
assert event[:status] == 500
136154
assert event[:"phoenix.endpoint"] =~ "PhxExampleWeb"
@@ -153,7 +171,10 @@ defmodule PhxExampleTest do
153171
"WebTransaction/Phoenix/PhxExampleWeb.ErrorLive/index"
154172
)
155173

156-
[[_, event]] = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
174+
events = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
175+
176+
event =
177+
TestHelper.find_event(events, "WebTransaction/Phoenix/PhxExampleWeb.ErrorLive/index")
157178

158179
assert event[:status] == 500
159180
assert event[:"phoenix.endpoint"] =~ "PhxExampleWeb"
@@ -177,7 +198,8 @@ defmodule PhxExampleTest do
177198

178199
assert TestHelper.find_metric(metrics, metric)
179200

180-
[[_, event]] = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
201+
events = TestHelper.gather_harvest(Collector.TransactionEvent.Harvester)
202+
event = TestHelper.find_event(events, metric)
181203

182204
assert event[:status] == 404
183205
assert event[:"phoenix.endpoint"] =~ "PhxExampleWeb"

examples/apps/redix_example/test/redix_example_test.exs

+4-12
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@ defmodule RedixExampleTest do
5555

5656
span_events = TestHelper.gather_harvest(Collector.SpanEvent.Harvester)
5757

58-
[get_event, _, _] =
59-
Enum.find(span_events, fn [ev, _, _] -> ev[:name] == "Datastore/operation/Redis/GET" end)
58+
get_event = TestHelper.find_event(span_events, "Datastore/operation/Redis/GET")
6059

6160
assert get_event[:"peer.address"] == "localhost:6379"
6261
assert get_event[:"db.statement"] == "GET mykey"
@@ -65,18 +64,14 @@ defmodule RedixExampleTest do
6564
assert get_event[:timestamp] |> is_number
6665
assert get_event[:duration] > 0.0
6766

68-
[pipeline_event, _, _] =
69-
Enum.find(span_events, fn [ev, _, _] ->
70-
ev[:name] == "Datastore/operation/Redis/PIPELINE"
71-
end)
67+
pipeline_event = TestHelper.find_event(span_events, "Datastore/operation/Redis/PIPELINE")
7268

7369
assert pipeline_event[:"peer.address"] == "localhost:6379"
7470

7571
assert pipeline_event[:"db.statement"] ==
7672
"DEL counter; INCR counter; INCR counter; GET counter"
7773

78-
[hset_event, _, _] =
79-
Enum.find(span_events, fn [ev, _, _] -> ev[:name] == "Datastore/operation/Redis/HSET" end)
74+
hset_event = TestHelper.find_event(span_events, "Datastore/operation/Redis/HSET")
8075

8176
assert hset_event[:"peer.address"] == "localhost:6379"
8277
end
@@ -89,10 +84,7 @@ defmodule RedixExampleTest do
8984

9085
span_events = TestHelper.gather_harvest(Collector.SpanEvent.Harvester)
9186

92-
[err_event, _, _] =
93-
Enum.find(span_events, fn [ev, _, _] ->
94-
ev[:name] == "Datastore/operation/Redis/PIPELINE"
95-
end)
87+
err_event = TestHelper.find_event(span_events, "Datastore/operation/Redis/PIPELINE")
9688

9789
assert err_event[:"peer.address"] == "localhost:6379"
9890
# On elixir 1.14 OTP 26, the error message is "unknown POSIX error: timeout"

test/aggregate_test.exs

+1-3
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ defmodule AggregateTest do
4343

4444
events = TestHelper.gather_harvest(Collector.CustomEvent.Harvester)
4545

46-
assert Enum.find(events, fn [_, event, _] ->
47-
event[:category] == "Metric" && event[:meta] == "data" && event[:duration] == 15
48-
end)
46+
assert TestHelper.find_event(events, %{category: "Metric", meta: "data", duration: 15})
4947
end
5048
end

test/backoff_sampler_test.exs

+3-3
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ defmodule BackoffSamplerTest do
9797
})
9898
end
9999

100-
@sampling_target 100
100+
@sampling_target_period 100
101101
test "cycles trigger" do
102-
TestHelper.run_with(:application_config, sampling_target_period: @sampling_target)
102+
TestHelper.run_with(:application_config, sampling_target_period: @sampling_target_period)
103103

104104
BackoffSampler.reset()
105105
BackoffSampler.trigger_next_cycle()
@@ -123,7 +123,7 @@ defmodule BackoffSamplerTest do
123123
refute BackoffSampler.sample?()
124124

125125
# Wait until the next cycle
126-
Process.sleep(@sampling_target + 10)
126+
Process.sleep(@sampling_target_period + 10)
127127

128128
# Next cycle it will adjust and take some, but not all
129129
decisions = [

test/custom_event_test.exs

+6-9
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,11 @@ defmodule CustomEventTest do
6060
test "user attributes can be truncated" do
6161
TestHelper.restart_harvest_cycle(Collector.CustomEvent.HarvestCycle)
6262

63-
NewRelic.report_custom_event("CustomEventTest", %{long_entry: String.duplicate("1", 5000)})
63+
NewRelic.report_custom_event("CustomEventTest", %{name: "long", long_entry: String.duplicate("1", 5000)})
6464

65-
[[_, attrs, _]] = TestHelper.gather_harvest(Collector.CustomEvent.Harvester)
66-
assert String.length(attrs.long_entry) == 4095
65+
events = TestHelper.gather_harvest(Collector.CustomEvent.Harvester)
66+
event = TestHelper.find_event(events, "long")
67+
assert String.length(event.long_entry) == 4095
6768

6869
TestHelper.pause_harvest_cycle(Collector.CustomEvent.HarvestCycle)
6970
end
@@ -140,9 +141,7 @@ defmodule CustomEventTest do
140141
events = TestHelper.gather_harvest(Collector.CustomEvent.Harvester)
141142
NewRelic.JSON.encode!(events)
142143

143-
[[_, attrs, _]] = events
144-
assert attrs[:bad_value] == "[BAD_VALUE]"
145-
assert attrs[:good_value] == "A string"
144+
assert TestHelper.find_event(events, %{good_value: "A string", bad_value: "[BAD_VALUE]"})
146145

147146
TestHelper.pause_harvest_cycle(Collector.CustomEvent.HarvestCycle)
148147
end
@@ -169,9 +168,7 @@ defmodule CustomEventTest do
169168

170169
events = TestHelper.gather_harvest(Collector.CustomEvent.Harvester)
171170

172-
assert Enum.find(events, fn [_, event, _] ->
173-
event[:key] == "TestEvent" && event[:test_attribute] == "test_value"
174-
end)
171+
assert TestHelper.find_event(events, %{key: "TestEvent", test_attribute: "test_value"})
175172
end
176173

177174
test "Respect the reservoir_size" do

0 commit comments

Comments
 (0)