auser-poolparty 0.2.16 → 0.2.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. data/Manifest.txt +72 -7
  2. data/PostInstall.txt +1 -1
  3. data/Rakefile +11 -0
  4. data/bin/cloud-provision +6 -10
  5. data/bin/server-build-messenger +20 -0
  6. data/bin/server-fire-cmd +0 -2
  7. data/bin/server-list-responding +24 -0
  8. data/bin/server-start-master +4 -9
  9. data/bin/server-start-node +7 -6
  10. data/lib/erlang/messenger/Emakefile +1 -0
  11. data/lib/erlang/messenger/Rakefile +29 -20
  12. data/lib/erlang/messenger/ebin/master_app.beam +0 -0
  13. data/lib/erlang/messenger/ebin/node_app.beam +0 -0
  14. data/lib/erlang/messenger/ebin/packager.app +19 -0
  15. data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
  16. data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
  17. data/lib/erlang/messenger/ebin/pm_event_handler.beam +0 -0
  18. data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
  19. data/lib/erlang/messenger/ebin/pm_master_rel-0.1.rel +1 -7
  20. data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
  21. data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
  22. data/lib/erlang/messenger/ebin/pm_node_rel-0.1.rel +1 -7
  23. data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
  24. data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
  25. data/lib/erlang/messenger/ebin/utils.beam +0 -0
  26. data/lib/erlang/messenger/lib/eunit/AUTHORS +2 -0
  27. data/lib/erlang/messenger/lib/eunit/CHANGELOG +14 -0
  28. data/lib/erlang/messenger/lib/eunit/COPYING +504 -0
  29. data/lib/erlang/messenger/lib/eunit/Makefile +28 -0
  30. data/lib/erlang/messenger/lib/eunit/NOTES +276 -0
  31. data/lib/erlang/messenger/lib/eunit/README +3 -0
  32. data/lib/erlang/messenger/lib/eunit/doc/edoc-info +3 -0
  33. data/lib/erlang/messenger/lib/eunit/doc/erlang.png +0 -0
  34. data/lib/erlang/messenger/lib/eunit/doc/eunit.html +172 -0
  35. data/lib/erlang/messenger/lib/eunit/doc/index.html +17 -0
  36. data/lib/erlang/messenger/lib/eunit/doc/modules-frame.html +12 -0
  37. data/lib/erlang/messenger/lib/eunit/doc/overview-summary.html +984 -0
  38. data/lib/erlang/messenger/lib/eunit/doc/overview.edoc +980 -0
  39. data/lib/erlang/messenger/lib/eunit/doc/packages-frame.html +11 -0
  40. data/lib/erlang/messenger/lib/eunit/doc/stylesheet.css +55 -0
  41. data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
  42. data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
  43. data/lib/erlang/messenger/lib/eunit/ebin/eunit.app +21 -0
  44. data/lib/erlang/messenger/lib/eunit/ebin/eunit.appup +1 -0
  45. data/lib/erlang/messenger/lib/eunit/ebin/eunit.beam +0 -0
  46. data/lib/erlang/messenger/lib/eunit/ebin/eunit_autoexport.beam +0 -0
  47. data/lib/erlang/messenger/lib/eunit/ebin/eunit_data.beam +0 -0
  48. data/lib/erlang/messenger/lib/eunit/ebin/eunit_lib.beam +0 -0
  49. data/lib/erlang/messenger/lib/eunit/ebin/eunit_proc.beam +0 -0
  50. data/lib/erlang/messenger/lib/eunit/ebin/eunit_serial.beam +0 -0
  51. data/lib/erlang/messenger/lib/eunit/ebin/eunit_server.beam +0 -0
  52. data/lib/erlang/messenger/lib/eunit/ebin/eunit_striptests.beam +0 -0
  53. data/lib/erlang/messenger/lib/eunit/ebin/eunit_test.beam +0 -0
  54. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tests.beam +0 -0
  55. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tty.beam +0 -0
  56. data/lib/erlang/messenger/lib/eunit/ebin/file_monitor.beam +0 -0
  57. data/lib/erlang/messenger/lib/eunit/examples/eunit_examples.erl +339 -0
  58. data/lib/erlang/messenger/lib/eunit/examples/fib.erl +19 -0
  59. data/lib/erlang/messenger/lib/eunit/examples/tests.txt +1 -0
  60. data/lib/erlang/messenger/lib/eunit/include/eunit.hrl +313 -0
  61. data/lib/erlang/messenger/lib/eunit/src/Makefile +46 -0
  62. data/lib/erlang/messenger/lib/eunit/src/autoload.erl +388 -0
  63. data/lib/erlang/messenger/lib/eunit/src/code_monitor.erl +243 -0
  64. data/lib/erlang/messenger/lib/eunit/src/eunit.app.src +21 -0
  65. data/lib/erlang/messenger/lib/eunit/src/eunit.appup.src +1 -0
  66. data/lib/erlang/messenger/lib/eunit/src/eunit.erl +196 -0
  67. data/lib/erlang/messenger/lib/eunit/src/eunit_autoexport.erl +102 -0
  68. data/lib/erlang/messenger/lib/eunit/src/eunit_data.erl +798 -0
  69. data/lib/erlang/messenger/lib/eunit/src/eunit_internal.hrl +48 -0
  70. data/lib/erlang/messenger/lib/eunit/src/eunit_lib.erl +682 -0
  71. data/lib/erlang/messenger/lib/eunit/src/eunit_proc.erl +552 -0
  72. data/lib/erlang/messenger/lib/eunit/src/eunit_serial.erl +157 -0
  73. data/lib/erlang/messenger/lib/eunit/src/eunit_server.erl +340 -0
  74. data/lib/erlang/messenger/lib/eunit/src/eunit_striptests.erl +64 -0
  75. data/lib/erlang/messenger/lib/eunit/src/eunit_test.erl +334 -0
  76. data/lib/erlang/messenger/lib/eunit/src/eunit_tests.erl +45 -0
  77. data/lib/erlang/messenger/lib/eunit/src/eunit_tty.erl +272 -0
  78. data/lib/erlang/messenger/lib/eunit/src/file_monitor.erl +409 -0
  79. data/lib/erlang/messenger/lib/eunit/sys.config +9 -0
  80. data/lib/erlang/messenger/lib/eunit/vsn.mk +1 -0
  81. data/lib/erlang/messenger/pm_master_rel-0.1.boot +0 -0
  82. data/lib/erlang/messenger/pm_master_rel-0.1.script +75 -2
  83. data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
  84. data/lib/erlang/messenger/pm_node_rel-0.1.script +75 -2
  85. data/lib/erlang/messenger/src/pm_client.erl +8 -3
  86. data/lib/erlang/messenger/src/pm_cluster.erl +32 -9
  87. data/lib/erlang/messenger/src/pm_master.erl +10 -11
  88. data/lib/erlang/messenger/src/pm_node.erl +2 -3
  89. data/lib/erlang/messenger/src/pm_packager.erl +73 -0
  90. data/lib/erlang/messenger/src/utils.erl +3 -10
  91. data/lib/poolparty/base_packages/heartbeat.rb +9 -9
  92. data/lib/poolparty/base_packages/poolparty.rb +16 -10
  93. data/lib/poolparty/config/allowed_commands.yml +1 -0
  94. data/lib/poolparty/core/object.rb +8 -0
  95. data/lib/poolparty/exceptions/UnacceptableCommand.rb +5 -0
  96. data/lib/poolparty/helpers/messenger.rb +29 -0
  97. data/lib/poolparty/helpers/provisioner_base.rb +7 -7
  98. data/lib/poolparty/helpers/provisioners/master.rb +3 -7
  99. data/lib/poolparty/helpers/provisioners/slave.rb +1 -0
  100. data/lib/poolparty/modules/cloud_resourcer.rb +7 -5
  101. data/lib/poolparty/modules/configurable.rb +1 -1
  102. data/lib/poolparty/modules/method_missing_sugar.rb +6 -1
  103. data/lib/poolparty/modules/pretty_printer.rb +1 -0
  104. data/lib/poolparty/modules/resourcing_dsl.rb +2 -1
  105. data/lib/poolparty/monitors/monitors/cpu_monitor.rb +1 -1
  106. data/lib/poolparty/net/remoter.rb +3 -1
  107. data/lib/poolparty/plugins/git.rb +3 -3
  108. data/lib/poolparty/pool/base.rb +7 -2
  109. data/lib/poolparty/pool/cloud.rb +3 -3
  110. data/lib/poolparty/pool/resource.rb +38 -24
  111. data/lib/poolparty/pool/resources/class_package.rb +2 -2
  112. data/lib/poolparty/pool/resources/conditional.rb +8 -4
  113. data/lib/poolparty/pool/resources/{gem.rb → gem_package.rb} +0 -0
  114. data/lib/poolparty/pool/resources/package.rb +8 -1
  115. data/lib/poolparty/version.rb +1 -1
  116. data/lib/poolparty.rb +1 -1
  117. data/poolparty.gemspec +476 -61
  118. data/spec/poolparty/core/object_spec.rb +20 -0
  119. data/spec/poolparty/helpers/messenger_spec.rb +14 -0
  120. data/spec/poolparty/helpers/provisioners/master_spec.rb +2 -2
  121. data/spec/poolparty/net/remoter_spec.rb +1 -1
  122. data/spec/poolparty/plugins/git_spec.rb +26 -19
  123. data/spec/poolparty/pool/base_spec.rb +20 -2
  124. data/spec/poolparty/pool/cloud_spec.rb +256 -249
  125. data/spec/poolparty/pool/custom_resource_spec.rb +6 -1
  126. data/spec/poolparty/pool/plugin_spec.rb +71 -65
  127. data/spec/poolparty/pool/resource_spec.rb +314 -237
  128. data/spec/poolparty/pool/resources/class_package_spec.rb +71 -66
  129. data/spec/poolparty/pool/resources/conditional_spec.rb +30 -26
  130. data/spec/poolparty/pool/resources/gem_spec.rb +18 -14
  131. data/spec/poolparty/pool/resources/variable_spec.rb +1 -1
  132. data/spec/poolparty/pool/script_spec.rb +46 -37
  133. data/spec/poolparty/spec_helper.rb +4 -0
  134. data/tasks/cloud.rake +0 -54
  135. data/tasks/development.rake +11 -14
  136. data/tasks/ec2.rake +10 -17
  137. data/tasks/instance.rake +0 -61
  138. data/website/index.html +1 -1
  139. metadata +83 -10
@@ -0,0 +1,196 @@
1
+ %% This library is free software; you can redistribute it and/or modify
2
+ %% it under the terms of the GNU Lesser General Public License as
3
+ %% published by the Free Software Foundation; either version 2 of the
4
+ %% License, or (at your option) any later version.
5
+ %%
6
+ %% This library is distributed in the hope that it will be useful, but
7
+ %% WITHOUT ANY WARRANTY; without even the implied warranty of
8
+ %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9
+ %% Lesser General Public License for more details.
10
+ %%
11
+ %% You should have received a copy of the GNU Lesser General Public
12
+ %% License along with this library; if not, write to the Free Software
13
+ %% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
14
+ %% USA
15
+ %%
16
+ %% $Id: eunit.erl 249 2008-05-11 20:06:45Z rcarlsson $
17
+ %%
18
+ %% @copyright 2004-2007 Micka�l R�mond, Richard Carlsson
19
+ %% @author Micka�l R�mond <mickael.remond@process-one.net>
20
+ %% [http://www.process-one.net/]
21
+ %% @author Richard Carlsson <richardc@it.uu.se>
22
+ %% [http://user.it.uu.se/~richardc/]
23
+ %% @version {@version}, {@date} {@time}
24
+ %% @doc This module is the normal EUnit user interface.
25
+
26
+ -module(eunit).
27
+
28
+ -include("eunit.hrl").
29
+ -include("eunit_internal.hrl").
30
+
31
+
32
+ -export([start/0, start/1, stop/0, stop/1, test/1, test/2, test/3,
33
+ list/1, submit/1, submit/2, submit/3, watch/1, watch/2,
34
+ watch/3, watch_path/1, watch_path/2, watch_path/3,
35
+ watch_regexp/1, watch_regexp/2, watch_regexp/3, watch_app/1,
36
+ watch_app/2, watch_app/3]).
37
+
38
+ -export([testp/1]). %% for development testing, not official
39
+
40
+
41
+ %% EUnit entry points
42
+
43
+ start() ->
44
+ start(?SERVER).
45
+
46
+ start(Server) ->
47
+ eunit_server:start(Server).
48
+
49
+ stop() ->
50
+ stop(?SERVER).
51
+
52
+ stop(Server) ->
53
+ eunit_server:stop(Server).
54
+
55
+ watch(Target) ->
56
+ watch(Target, []).
57
+
58
+ watch(Target, Options) ->
59
+ watch(?SERVER, Target, Options).
60
+
61
+ watch(Server, Target, Options) ->
62
+ eunit_server:watch(Server, Target, Options).
63
+
64
+ watch_path(Target) ->
65
+ watch_path(Target, []).
66
+
67
+ watch_path(Target, Options) ->
68
+ watch_path(?SERVER, Target, Options).
69
+
70
+ watch_path(Server, Target, Options) ->
71
+ eunit_server:watch_path(Server, Target, Options).
72
+
73
+ watch_regexp(Target) ->
74
+ watch_regexp(Target, []).
75
+
76
+ watch_regexp(Target, Options) ->
77
+ watch_regexp(?SERVER, Target, Options).
78
+
79
+ watch_regexp(Server, Target, Options) ->
80
+ eunit_server:watch_regexp(Server, Target, Options).
81
+
82
+ watch_app(Name) ->
83
+ watch_app(Name, []).
84
+
85
+ watch_app(Name, Options) ->
86
+ watch_app(?SERVER, Name, Options).
87
+
88
+ watch_app(Server, Name, Options) ->
89
+ case code:lib_dir(Name) of
90
+ Path when is_list(Path) ->
91
+ watch_path(Server, filename:join(Path, "ebin"), Options);
92
+ _ ->
93
+ error
94
+ end.
95
+
96
+ list(T) ->
97
+ try eunit_data:list(T)
98
+ catch
99
+ {error, R} -> {error, R}
100
+ end.
101
+
102
+ test(T) ->
103
+ test(T, [{order, inorder}]).
104
+
105
+ testp(T) ->
106
+ test(T, [{order, inparallel}]).
107
+
108
+ test(T, Options) ->
109
+ test(?SERVER, T, Options).
110
+
111
+ test(Server, T, Options) ->
112
+ %% TODO: try to eliminate call to list/1
113
+ try eunit_data:list(T) of
114
+ List ->
115
+ Listeners = [eunit_tty:start(List, Options)
116
+ | listeners(Options)],
117
+ Serial = eunit_serial:start(Listeners),
118
+ case eunit_server:start_test(Server, Serial, T, Options) of
119
+ {ok, Reference} -> test_run(Reference, Listeners);
120
+ {error, R} -> {error, R}
121
+ end
122
+ catch
123
+ {error, R} ->
124
+ io:put_chars(eunit_lib:format_error(R)),
125
+ {error, R}
126
+ end.
127
+
128
+ test_run(Reference, Listeners) ->
129
+ receive
130
+ {start, Reference} ->
131
+ cast(Listeners, {start, Reference})
132
+ end,
133
+ receive
134
+ {done, Reference} ->
135
+ cast(Listeners, {stop, Reference, self()}),
136
+ receive
137
+ {result, Reference, Result} ->
138
+ Result
139
+ end
140
+ end.
141
+
142
+ cast([P | Ps], Msg) ->
143
+ P ! Msg,
144
+ cast(Ps, Msg);
145
+ cast([], Msg) ->
146
+ Msg.
147
+
148
+ %% TODO: functions that run tests on a given node, not a given server
149
+ %% TODO: maybe some functions could check for a globally registered server?
150
+ %% TODO: some synchronous but completely quiet interface function
151
+
152
+ submit(T) ->
153
+ submit(T, []).
154
+
155
+ submit(T, Options) ->
156
+ submit(?SERVER, T, Options).
157
+
158
+ submit(Server, T, Options) ->
159
+ Dummy = spawn(fun devnull/0),
160
+ eunit_server:start_test(Server, Dummy, T, Options).
161
+
162
+ listeners(Options) ->
163
+ case proplists:get_value(event_log, Options) of
164
+ undefined ->
165
+ [];
166
+ LogFile ->
167
+ [spawn(fun () -> event_logger(LogFile) end)]
168
+ end.
169
+
170
+ %% TODO: make this report file errors
171
+ event_logger(LogFile) ->
172
+ case file:open(LogFile, [write]) of
173
+ {ok, FD} ->
174
+ receive
175
+ {start, Reference} ->
176
+ event_logger_loop(Reference, FD)
177
+ end;
178
+ Error ->
179
+ exit(Error)
180
+ end.
181
+
182
+ event_logger_loop(Reference, FD) ->
183
+ receive
184
+ {status, _Id, _Info}=Msg ->
185
+ io:fwrite(FD, "~w.\n", [Msg]),
186
+ event_logger_loop(Reference, FD);
187
+ {stop, Reference, _ReplyTo} ->
188
+ %% no need to reply, just exit
189
+ file:close(FD),
190
+ exit(normal)
191
+ end.
192
+
193
+ %% TODO: make a proper logger for asynchronous execution with submit/3
194
+
195
+ devnull() ->
196
+ receive _ -> devnull() end.
@@ -0,0 +1,102 @@
1
+ %% This library is free software; you can redistribute it and/or modify
2
+ %% it under the terms of the GNU Lesser General Public License as
3
+ %% published by the Free Software Foundation; either version 2 of the
4
+ %% License, or (at your option) any later version.
5
+ %%
6
+ %% This library is distributed in the hope that it will be useful, but
7
+ %% WITHOUT ANY WARRANTY; without even the implied warranty of
8
+ %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9
+ %% Lesser General Public License for more details.
10
+ %%
11
+ %% You should have received a copy of the GNU Lesser General Public
12
+ %% License along with this library; if not, write to the Free Software
13
+ %% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
14
+ %% USA
15
+ %%
16
+ %% $Id: eunit_autoexport.erl 258 2008-10-02 07:09:39Z rcarlsson $
17
+ %%
18
+ %% @author Richard Carlsson <richardc@it.uu.se>
19
+ %% @copyright 2006 Richard Carlsson
20
+ %% @private
21
+ %% @see eunit
22
+ %% @doc Parse transform for automatic exporting of test functions.
23
+
24
+ -module(eunit_autoexport).
25
+
26
+ -include("eunit_internal.hrl").
27
+
28
+ -export([parse_transform/2]).
29
+
30
+
31
+ parse_transform(Forms, Options) ->
32
+ TestSuffix = proplists:get_value(eunit_test_suffix, Options,
33
+ ?DEFAULT_TEST_SUFFIX),
34
+ GeneratorSuffix = proplists:get_value(eunit_generator_suffix,
35
+ Options,
36
+ ?DEFAULT_GENERATOR_SUFFIX),
37
+ ExportSuffix = proplists:get_value(eunit_export_suffix, Options,
38
+ ?DEFAULT_EXPORT_SUFFIX),
39
+ F = fun (Form, Set) ->
40
+ form(Form, Set, TestSuffix, GeneratorSuffix,
41
+ ExportSuffix)
42
+ end,
43
+ Exports = sets:to_list(lists:foldl(F, sets:new(), Forms)),
44
+ rewrite(Forms, Exports).
45
+
46
+ form({function, _L, Name, 0, _Cs}, S, TestSuffix, GeneratorSuffix,
47
+ ExportSuffix) ->
48
+ N = atom_to_list(Name),
49
+ case lists:suffix(TestSuffix, N) of
50
+ true ->
51
+ sets:add_element({Name, 0}, S);
52
+ false ->
53
+ case lists:suffix(GeneratorSuffix, N) of
54
+ true ->
55
+ sets:add_element({Name, 0}, S);
56
+ false ->
57
+ case lists:suffix(ExportSuffix, N) of
58
+ true ->
59
+ sets:add_element({Name, 0}, S);
60
+ false ->
61
+ S
62
+ end
63
+ end
64
+ end;
65
+ form(_, S, _, _, _) ->
66
+ S.
67
+
68
+ rewrite([{attribute,_,module,{Name,_Ps}}=M | Fs], Exports) ->
69
+ module_decl(Name, M, Fs, Exports);
70
+ rewrite([{attribute,_,module,Name}=M | Fs], Exports) ->
71
+ module_decl(Name, M, Fs, Exports);
72
+ rewrite([F | Fs], Exports) ->
73
+ [F | rewrite(Fs, Exports)];
74
+ rewrite([], _Exports) ->
75
+ []. %% fail-safe, in case there is no module declaration
76
+
77
+ rewrite([{function,_,test,0,_}=F | Fs], As, Module, _Test) ->
78
+ rewrite(Fs, [F | As], Module, false);
79
+ rewrite([F | Fs], As, Module, Test) ->
80
+ rewrite(Fs, [F | As], Module, Test);
81
+ rewrite([], As, Module, Test) ->
82
+ {if Test ->
83
+ EUnit = {record_field,0,{atom,0,''},{atom,0,eunit}},
84
+ [{function,0,test,0,
85
+ [{clause,0,[],[],
86
+ [{call,0,{remote,0,EUnit,{atom,0,test}},
87
+ [{atom,0,Module}]}]}]}
88
+ | As];
89
+ true ->
90
+ As
91
+ end,
92
+ Test}.
93
+
94
+ module_decl(Name, M, Fs, Exports) ->
95
+ Module = if is_atom(Name) -> Name;
96
+ true -> list_to_atom(packages:concat(Name))
97
+ end,
98
+ {Fs1, Test} = rewrite(Fs, [], Module, true),
99
+ Es = if Test -> [{test,0} | Exports];
100
+ true -> Exports
101
+ end,
102
+ [M, {attribute,0,export,Es} | lists:reverse(Fs1)].