2011-06-28 21:00:29 +08:00
|
|
|
#!/usr/bin/env escript
|
|
|
|
|
%% -*- erlang -*-
|
|
|
|
|
%%! -sname quickcheck
|
|
|
|
|
-mode(compile).
|
|
|
|
|
|
|
|
|
|
%% A helper to test quickcheck properties on a running broker
|
|
|
|
|
%% NodeStr is a local broker node name
|
|
|
|
|
%% ModStr is the module containing quickcheck properties
|
|
|
|
|
%% The number of trials is optional
|
|
|
|
|
main([NodeStr, ModStr | TrialsStr]) ->
|
2011-07-01 23:08:19 +08:00
|
|
|
{ok, Hostname} = inet:gethostname(),
|
|
|
|
|
Node = list_to_atom(NodeStr ++ "@" ++ Hostname),
|
|
|
|
|
Mod = list_to_atom(ModStr),
|
2011-06-28 21:00:29 +08:00
|
|
|
Trials = lists:map(fun erlang:list_to_integer/1, TrialsStr),
|
|
|
|
|
case rpc:call(Node, code, ensure_loaded, [proper]) of
|
|
|
|
|
{module, proper} ->
|
|
|
|
|
case rpc:call(Node, proper, module, [Mod] ++ Trials) of
|
|
|
|
|
[] -> ok;
|
|
|
|
|
_ -> quit(1)
|
|
|
|
|
end;
|
2011-07-01 23:08:19 +08:00
|
|
|
{badrpc, Reason} ->
|
|
|
|
|
io:format("Could not contact node ~p: ~p.~n", [Node, Reason]),
|
|
|
|
|
quit(2);
|
|
|
|
|
{error,nofile} ->
|
|
|
|
|
io:format("Module PropEr was not found on node ~p~n", [Node]),
|
2011-06-28 21:00:29 +08:00
|
|
|
quit(2)
|
|
|
|
|
end;
|
|
|
|
|
main([]) ->
|
|
|
|
|
io:format("This script requires a node name and a module.~n").
|
|
|
|
|
|
|
|
|
|
quit(Status) ->
|
|
|
|
|
case os:type() of
|
|
|
|
|
{unix, _} -> halt(Status);
|
|
|
|
|
{win32, _} -> init:stop(Status)
|
|
|
|
|
end.
|
|
|
|
|
|