[erlang-questions] testing side effects of asynchronous code

Ahmed Omar <>
Tue Jan 3 10:16:16 CET 2012


Ignas,
The problem is not in the flags, it's just that the process can't trace
itself.
For example you can't do this
erlang:trace(self(), true, [call, {tracer,self()}]).

If u wanna use tracing for this, you can simply write the desired api as :
call_and_sleep({ModC, FunC, ArgC}=_Call, {ModS,FunS,ArgS}=_SleepFor)->
    erlang:trace(all ,true, [call]),
    erlang:trace_pattern({ModS, FunS, ArgS}, true, []),
    spawn(ModC, FunC, ArgC),
    receive
        {trace, _, _, _} ->
            ok
    end.

2012/1/2 Ignas Vyšniauskas <>

> On 2012.01.02 19:57, Gianfranco Alongi wrote:
> > Hi - just throwing this out there.
> >
> > I started thinking about this too and wanted some kind of lib for
> > side-effect testing and got only as far as whipping up some basic
> > stuff
> >
> >
> https://github.com/Gianfrancoalongi/Audit-Collector---A-real-time-version-of-Frame-Axiom/
> >
> > I didn't have too much time back then and it was mostly a proof of
> concept
> >
> > /G
>
> Hmm, this is interesting, I was thinking of abusing the Erlang tracer as
> well.
>
> For the question Motiejus raised, could something like this possibly work:
>
> erlang:trace(all, true, [call, {tracer, self()}]),
> % I tried all of the flags: global, local and meta, all failed
> erlang:trace_pattern({gen_gwserver, ack_sent, 1}, true, [local]),
> gateway_api:send(Msg),
> receive
>    {trace, _, _, _} ->
>        ok % gen_gwserver:ack_sent/1 was called, we can proceed
> end,
> ?assert(Something)
>
> I tried this, but it didn't work. Unfortunately, my understanding of
> Erlang's trace mechanism is very poor, so I couldn't work out whether
> it's possible to fix it somehow.
>
> Thanks,
> Ignas
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>



-- 
Best Regards,
- Ahmed Omar
http://nl.linkedin.com/in/adiaa
Follow me on twitter
@spawn_think <http://twitter.com/#!/spawn_think>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120103/24cfb47f/attachment.html>


More information about the erlang-questions mailing list