marcdel
Say I have some code like this:
require OpenTelemetry.Span
require OpenTelemetry.Tracer
def hello do
OpenTelemetry.Tracer.with_span "hello method" do
val = :world
OpenTelemetry.Span.set_attributes(result: val)
val
end
end
I’d like to be able to test:
- that a span with the name “hello method” was created
- that it had the attribute
result: :world - what the parent id was, if any
- whether it was recorded
- whether it was sampled
With Telemetry you can :telemetry.attach and give it a fake handler. Not sure what the best approach is for OpenTelemetry. Anyone have ideas?
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Hello,
I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex










Showing Posts 1 to 3- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
RudManusachi
In the application level, I think all we need is to test that OpenTelemetry’s functions are being called, rather than test how they perform and what they produce.
With Mox it might be something like
With this we are making sure that
MyModule.hello()invokes OpenTelemetry’sset_attributesfunction with our desired attribute. (Similarly we can write an expectation forTracer.with_span).For the rest, (wether it’s recorded, sampled) I would rely on tests in library and assume that it works properly.
In other words, in my application I just make sure that I gave 3rd party lib required info - the rest is not my responsibility
marcdel
Yeah, I think that’s good advice for client apps. I didn’t know
Spandefined a behavior and hadn’t thought about mocking theset_attributesmethod, so that’s good to know!I’m actually working on a library that defines and links spans so it’s nice to have a bit more control. A couple folks on slack pointed me toward the
pidandetsexporters. The example they linked registers thepidexporter to send spans to the test process and then assert that the received span has the correct attributes.https://github.com/opentelemetry-beam/opentelemetry_phoenix/blob/main/test/opentelemetry_phoenix_test.exs#L99-L166
RudManusachi
Nice!
Honestly, I haven’t worked with OpenTelemetry, and don’t know if
OpenTelemetry.Spandefines behaviour (seems like it’s not)But for mocking with Mox if behaviour is not defined by lib I would write it and have the lib’s original module as one of the implementations.
Thank you for following up in here with those ideas!