Skip to content

Commit e43906e

Browse files
committed
Refactor OpentelemetryOban test setup
1 parent b6c577b commit e43906e

File tree

11 files changed

+80
-81
lines changed

11 files changed

+80
-81
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# This file is responsible for configuring your application
2+
# and its dependencies with the aid of the Mix.Config module.
3+
import Config
4+
5+
try do
6+
import_config "#{Mix.env()}.exs"
7+
rescue
8+
_ -> :ok
9+
end
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import Config
2+
3+
config :opentelemetry_oban,
4+
ecto_repos: [TestRepo]
5+
6+
config :opentelemetry_oban, TestRepo,
7+
hostname: "localhost",
8+
username: "postgres",
9+
password: "postgres",
10+
database: "opentelemetry_oban_test",
11+
pool: Ecto.Adapters.SQL.Sandbox

instrumentation/opentelemetry_oban/docker-compose.yml

Lines changed: 0 additions & 11 deletions
This file was deleted.

instrumentation/opentelemetry_oban/mix.exs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,14 @@ defmodule OpentelemetryOban.MixProject do
1010
elixir: "~> 1.11",
1111
start_permanent: Mix.env() == :prod,
1212
deps: deps(),
13+
aliases: aliases(),
14+
elixirc_paths: elixirc_paths(Mix.env()),
1315
docs: [
1416
source_url_pattern:
1517
"https://github.com/open-telemetry/opentelemetry-erlang-contrib/blob/main/instrumentation/opentelemetry_oban/%{path}#L%{line}",
1618
main: "OpentelemetryOban",
1719
extras: ["README.md"]
1820
],
19-
elixirc_paths: elixirc_paths(Mix.env()),
2021
package: [
2122
name: "opentelemetry_oban",
2223
description: "OpenTelemetry tracing for Oban",
@@ -41,7 +42,13 @@ defmodule OpentelemetryOban.MixProject do
4142
]
4243
end
4344

44-
# Run "mix help deps" to learn about dependencies.
45+
defp elixirc_paths(:test), do: ["lib", "test/support"]
46+
defp elixirc_paths(_), do: ["lib"]
47+
48+
defp aliases() do
49+
[test: ["ecto.drop -q", "ecto.create -q", "ecto.migrate --quiet", "test"]]
50+
end
51+
4552
defp deps do
4653
[
4754
{:oban, "~> 2.0"},
@@ -55,7 +62,4 @@ defmodule OpentelemetryOban.MixProject do
5562
{:postgrex, ">= 0.0.0", only: [:dev, :test]}
5663
]
5764
end
58-
59-
defp elixirc_paths(:test), do: ["lib", "test/support"]
60-
defp elixirc_paths(_), do: ["lib"]
6165
end
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
defmodule OpentelemetryOban.TestRepo.Migrations.SetupTables do
2+
use Ecto.Migration
3+
4+
def up, do: Oban.Migrations.up()
5+
end
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
defmodule TestJob do
2+
use Oban.Worker, queue: :events, max_attempts: 1
3+
4+
@impl Oban.Worker
5+
def perform(_job) do
6+
:ok
7+
end
8+
end
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
defmodule TestJobThatReturnsError do
2+
use Oban.Worker, queue: :events, max_attempts: 1
3+
4+
@impl Oban.Worker
5+
def perform(_job) do
6+
{:error, :something}
7+
end
8+
end
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
defmodule TestJobThatThrowsException do
2+
use Oban.Worker, queue: :events, max_attempts: 1
3+
4+
@impl Oban.Worker
5+
def perform(_job) do
6+
raise %UndefinedFunctionError{
7+
message: "function Some.error/0 is undefined (module Some is not available)"
8+
}
9+
end
10+
end
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
defmodule TestJobWithInnerSpan do
2+
use Oban.Worker, queue: :events, max_attempts: 1
3+
require OpenTelemetry.Tracer
4+
5+
@impl Oban.Worker
6+
def perform(_job) do
7+
OpenTelemetry.Tracer.with_span "span inside the job" do
8+
:ok
9+
end
10+
end
11+
end
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
defmodule TestHelpers do
2+
def remove_oban_handlers() do
3+
Enum.each(:telemetry.list_handlers([:oban]), fn handler ->
4+
:telemetry.detach(handler[:id])
5+
end)
6+
end
7+
end
Lines changed: 2 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,12 @@
1-
ExUnit.start(capture_log: true)
1+
TestRepo.start_link()
22

3-
TestRepo.start_link(
4-
database: "opentelemetry_oban_test",
5-
hostname: "localhost",
6-
username: "postgres",
7-
password: "postgres",
8-
pool: Ecto.Adapters.SQL.Sandbox
9-
)
3+
ExUnit.start(capture_log: true)
104

115
Ecto.Adapters.SQL.Sandbox.mode(TestRepo, {:shared, self()})
126

13-
defmodule PrepareOban do
14-
use Ecto.Migration
15-
def up, do: Oban.Migrations.up()
16-
end
17-
18-
Ecto.Migrator.run(TestRepo, [{0, PrepareOban}], :up, all: true)
19-
TestRepo.query("TRUNCATE oban_jobs", [])
20-
217
Oban.start_link(
228
repo: TestRepo,
239
plugins: [Oban.Plugins.Pruner],
2410
notifier: Oban.Notifiers.PG,
2511
testing: :manual
2612
)
27-
28-
defmodule TestJob do
29-
use Oban.Worker, queue: :events, max_attempts: 1
30-
31-
@impl Oban.Worker
32-
def perform(_job) do
33-
:ok
34-
end
35-
end
36-
37-
defmodule TestJobWithInnerSpan do
38-
use Oban.Worker, queue: :events, max_attempts: 1
39-
require OpenTelemetry.Tracer
40-
41-
@impl Oban.Worker
42-
def perform(_job) do
43-
OpenTelemetry.Tracer.with_span "span inside the job" do
44-
:ok
45-
end
46-
end
47-
end
48-
49-
defmodule TestJobThatReturnsError do
50-
use Oban.Worker, queue: :events, max_attempts: 1
51-
52-
@impl Oban.Worker
53-
def perform(_job) do
54-
{:error, :something}
55-
end
56-
end
57-
58-
defmodule TestJobThatThrowsException do
59-
use Oban.Worker, queue: :events, max_attempts: 1
60-
61-
@impl Oban.Worker
62-
def perform(_job) do
63-
raise %UndefinedFunctionError{
64-
message: "function Some.error/0 is undefined (module Some is not available)"
65-
}
66-
end
67-
end
68-
69-
defmodule TestHelpers do
70-
def remove_oban_handlers() do
71-
Enum.each(:telemetry.list_handlers([:oban]), fn handler ->
72-
:telemetry.detach(handler[:id])
73-
end)
74-
end
75-
end

0 commit comments

Comments
 (0)