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
Hello!
Suppose you are building workflow (order / task / payment) processing system with the following requirements:
Each workflow con...
New
I’m aware of 2 such projects, are there others?
git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
Hi everyone.
My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
Hello folks!
So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
How Can I Optimise Compile Time Dependencies
I have been building an elixir application for about 2 years now. Many modules and files ha...
New
Hi,
we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New
Other Trending Topics
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself.
My main conc...
New
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with.
But I don’t use it anymore.
Serverless was the promis...
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
- #ai
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #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!