|
|
@ -322,6 +322,13 @@ reset_counters(Module) -> |
|
|
|
reset_counters(Module, Counter) -> |
|
|
|
Module:reset_counters(Counter). |
|
|
|
|
|
|
|
prepare_store(Store) when not is_list(Store) -> Store; |
|
|
|
prepare_store(Store) -> |
|
|
|
lists:map(fun({K, V}) when is_pid(V); is_port(V); is_reference(V) |
|
|
|
-> {K, {other, binary_to_list(term_to_binary(V))}} ; |
|
|
|
({K, V}) -> {K, V} |
|
|
|
end, Store). |
|
|
|
|
|
|
|
%% @private Map a query to a module data term. |
|
|
|
-spec module_data(atom(), term(), term()) -> {ok, #module{}}. |
|
|
|
module_data(Module, Query, Store) -> |
|
|
@ -337,7 +344,8 @@ module_data(Module, Query, Store) -> |
|
|
|
%% function maps names to registered processes response for those tables. |
|
|
|
Tables = module_tables(Module), |
|
|
|
Query2 = glc_lib:reduce(Query), |
|
|
|
{ok, #module{'query'=Query, tables=Tables, qtree=Query2, store=Store}}. |
|
|
|
Store2 = prepare_store(Store), |
|
|
|
{ok, #module{'query'=Query, tables=Tables, qtree=Query2, store=Store2}}. |
|
|
|
|
|
|
|
%% @private Create a data managed supervised process for params, counter tables |
|
|
|
module_tables(Module) -> |
|
|
@ -1023,6 +1031,22 @@ events_test_() -> |
|
|
|
?assertEqual(1, Mod:info(job_error)), |
|
|
|
?assertEqual(b, receive {b=Msg, _Store} -> Msg after 0 -> notcalled end) |
|
|
|
end |
|
|
|
}, |
|
|
|
{"with pid storage test", |
|
|
|
fun() -> |
|
|
|
Self = self(), |
|
|
|
XPid = spawn(fun() -> receive {msg, Msg, Pid} -> Self ! {Msg, Pid} end end), |
|
|
|
Store = [{stored, XPid}], |
|
|
|
{compiled, Mod} = setup_query(testmod27, |
|
|
|
glc:with(glc:eq(a, 1), fun(Event, _EStore) -> |
|
|
|
{ok, Pid} = glc:get(testmod27, stored), |
|
|
|
Pid ! {msg, gre:fetch(a, Event), Self} |
|
|
|
end), |
|
|
|
Store), |
|
|
|
glc:handle(Mod, gre:make([{a,1}], [list])), |
|
|
|
?assertEqual(1, Mod:info(output)), |
|
|
|
?assertEqual(1, receive {Msg, Pid} -> Pid ! Msg after 2 -> notcalled end) |
|
|
|
end |
|
|
|
} |
|
|
|
] |
|
|
|
}. |
|
|
|