appswarm 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. data/.autotest +124 -0
  2. data/History.txt +7 -0
  3. data/Manifest.txt +304 -0
  4. data/README.txt +373 -0
  5. data/Rakefile +153 -0
  6. data/TODO +7 -0
  7. data/apps/README.txt +17 -0
  8. data/apps/admin/admin.rb +79 -0
  9. data/apps/admin/controllers/admin.rb +81 -0
  10. data/apps/admin/controllers/settings.rb +63 -0
  11. data/apps/admin/controllers/users.rb +3 -0
  12. data/apps/admin/features/access.feature +21 -0
  13. data/apps/admin/features/mountLocal.feature +12 -0
  14. data/apps/admin/features/settings.feature +68 -0
  15. data/apps/admin/features/startApps.feature +27 -0
  16. data/apps/admin/layouts/main.rhtml +10 -0
  17. data/apps/admin/lib/settings.rb +52 -0
  18. data/apps/admin/static/admin.css +23 -0
  19. data/apps/admin/views/_log.rhtml +21 -0
  20. data/apps/admin/views/index.rhtml +43 -0
  21. data/apps/admin/views/info.rhtml +7 -0
  22. data/apps/admin/views/settings.rhtml +9 -0
  23. data/apps/admin/views/settings/_http_app.rhtml +15 -0
  24. data/apps/admin/views/settings/_web_server.rhtml +32 -0
  25. data/apps/admin/views/settings/index.rhtml +3 -0
  26. data/apps/admin/views/users/index.rhtml +6 -0
  27. data/apps/application_provider/application_provider.rb +11 -0
  28. data/apps/blog/blog.rb +27 -0
  29. data/apps/blog/controllers/blog.rb +29 -0
  30. data/apps/blog/views/index.rhtml +27 -0
  31. data/apps/browser_starter/browser_starter.rb +32 -0
  32. data/apps/crypto/crypto.rb +47 -0
  33. data/apps/crypto/crypto_rsa.rb +102 -0
  34. data/apps/crypto/spec/crypto_spec.rb +10 -0
  35. data/apps/directory_service/directory_service.rb +107 -0
  36. data/apps/directory_service/net_application.rb +92 -0
  37. data/apps/directory_service/spec/directory_service_spec.rb +36 -0
  38. data/apps/directory_service/spec/net_application_spec.rb +3 -0
  39. data/apps/global_application_interface/global_application.rb +52 -0
  40. data/apps/global_application_interface/global_application_interface.rb +84 -0
  41. data/apps/global_application_interface/spec/app_api_spec.rb +5 -0
  42. data/apps/global_tuple_space/global_tuple_space.rb +27 -0
  43. data/apps/global_web_proxy/features/session_handling.feature +7 -0
  44. data/apps/global_web_proxy/global_web_proxy.rb +221 -0
  45. data/apps/global_web_proxy/proxy/HTTPProxyServer-Dateien/rdoc-style.css +208 -0
  46. data/apps/global_web_proxy/proxy/HTTPProxyServer.html +566 -0
  47. data/apps/global_web_proxy/proxy/dnstest.rb +30 -0
  48. data/apps/global_web_proxy/proxy/proxy.rb +86 -0
  49. data/apps/global_web_proxy/proxy/wiki.html +267 -0
  50. data/apps/global_web_proxy/proxy/wiki.rb +115 -0
  51. data/apps/global_web_proxy/spec/res1 +112 -0
  52. data/apps/global_web_proxy/spec/res2 +125 -0
  53. data/apps/global_web_proxy/spec/web_proxy_spec.rb +88 -0
  54. data/apps/global_web_server/global_web_server.rb +120 -0
  55. data/apps/global_web_server/global_web_servlet.rb +6 -0
  56. data/apps/hello_world/controllers/hello_world.rb +11 -0
  57. data/apps/hello_world/features/show_on_local_web_server.feature +44 -0
  58. data/apps/hello_world/features/starting_apps.feature +6 -0
  59. data/apps/hello_world/features/through_global.feature +12 -0
  60. data/apps/hello_world/hello_world.rb +3 -0
  61. data/apps/hello_world/views/get.rhtml +10 -0
  62. data/apps/hello_world/views/index.rhtml +9 -0
  63. data/apps/hello_world/views/post.rhtml +10 -0
  64. data/apps/home/controllers/home.rb +11 -0
  65. data/apps/home/home.rb +12 -0
  66. data/apps/home/layouts/main.rhtml +16 -0
  67. data/apps/home/static/Zeichnung.svg +240 -0
  68. data/apps/home/static/home.css +134 -0
  69. data/apps/home/static/menu.css +99 -0
  70. data/apps/home/views/_appInfo.rhtml +22 -0
  71. data/apps/home/views/_dummy_fill.rhtml +3 -0
  72. data/apps/home/views/_info.rhtml +6 -0
  73. data/apps/home/views/_menu.rhtml +17 -0
  74. data/apps/home/views/index.rhtml +4 -0
  75. data/apps/home/views/overview.rhtml +2 -0
  76. data/apps/local_chunk_store/chunk_store.rb +15 -0
  77. data/apps/local_chunk_store/local_chunk_store.rb +123 -0
  78. data/apps/local_chunk_store/spec/local_chunk_store_spec.rb +30 -0
  79. data/apps/local_file_store/app_configuration.rb +78 -0
  80. data/apps/local_file_store/app_file_store.rb +32 -0
  81. data/apps/local_file_store/cached_file_store.rb +94 -0
  82. data/apps/local_file_store/features/testbed_handling_of_directories.feature +20 -0
  83. data/apps/local_file_store/local_file_store.rb +47 -0
  84. data/apps/local_file_store/spec/app_configuration_spec.rb +30 -0
  85. data/apps/local_file_store/spec/local_file_store_spec.rb +54 -0
  86. data/apps/local_object_storage/lib/cell.rb +29 -0
  87. data/apps/local_object_storage/lib/cellmgr.rb +57 -0
  88. data/apps/local_object_storage/lib/index.rb +43 -0
  89. data/apps/local_object_storage/lib/marshal.rb +96 -0
  90. data/apps/local_object_storage/lib/pagefile.rb +6 -0
  91. data/apps/local_object_storage/lib/persistent_object.rb +126 -0
  92. data/apps/local_object_storage/local_object_storage.rb +148 -0
  93. data/apps/local_object_storage/spec/local_object_storage_spec.rb +123 -0
  94. data/apps/local_secure_file_store/local_secure_file_store.rb +64 -0
  95. data/apps/local_secure_file_store/spec/local_secure_file_store_spec.rb +23 -0
  96. data/apps/local_tuple_space/local_tuple_space.rb +92 -0
  97. data/apps/local_tuple_space/spec/tuple_space_spec.rb +25 -0
  98. data/apps/local_web_server/features/parsing_args.feature +18 -0
  99. data/apps/local_web_server/local_web_server.rb +166 -0
  100. data/apps/logger/logger.rb +27 -0
  101. data/apps/master/master.rb +46 -0
  102. data/apps/master/spec/master_spec.rb +31 -0
  103. data/apps/my_spec_spec.rb +15 -0
  104. data/apps/name_service/name_service.rb +75 -0
  105. data/apps/name_service/spec/name_service_spec.rb +51 -0
  106. data/apps/network_discovery/network_discovery.rb +45 -0
  107. data/apps/network_discovery_localstore/network_discovery_localstore.rb +20 -0
  108. data/apps/network_discovery_udp/network_discovery_udp.rb +51 -0
  109. data/apps/network_lookup/network_lookup.rb +61 -0
  110. data/apps/network_node/abstract_node.rb +104 -0
  111. data/apps/network_node/drb_node.rb +90 -0
  112. data/apps/network_node/network_app.rb +9 -0
  113. data/apps/network_node/network_node.rb +471 -0
  114. data/apps/network_node/remote_service.rb +45 -0
  115. data/apps/network_node/secure_node.rb +125 -0
  116. data/apps/network_node/spec/drb_spec.rb +41 -0
  117. data/apps/network_node/spec/network_node_spec_not.rb +264 -0
  118. data/apps/new_network_node/new_network_node.rb +427 -0
  119. data/apps/new_network_node/spec/new_network_node_spec.rb +186 -0
  120. data/apps/node_broadcast/node_broadcast.rb +167 -0
  121. data/apps/node_broadcast/spec/node_broadcast_spec.rb +59 -0
  122. data/apps/permaspace/permaspace.rb +47 -0
  123. data/apps/plaindb/lib/btree.rb +38 -0
  124. data/apps/plaindb/plaindb.rb +199 -0
  125. data/apps/plaindb/spec/table_write_spec.rb +36 -0
  126. data/apps/routed_network/routed_network.rb +23 -0
  127. data/apps/routed_network/spec/routed_network_spec.rb +17 -0
  128. data/apps/session_manager/session_manager.rb +18 -0
  129. data/apps/spec_output.html +222 -0
  130. data/apps/todo/controllers/todo.rb +87 -0
  131. data/apps/todo/model/comment.rb +10 -0
  132. data/apps/todo/model/project.rb +20 -0
  133. data/apps/todo/model/todo.rb +16 -0
  134. data/apps/todo/model/user.rb +5 -0
  135. data/apps/todo/todo.rb +21 -0
  136. data/apps/todo/views/_commentList.rhtml +7 -0
  137. data/apps/todo/views/_createProject.rhtml +5 -0
  138. data/apps/todo/views/_partList.rhtml +12 -0
  139. data/apps/todo/views/_projectList.rhtml +16 -0
  140. data/apps/todo/views/edit.rhtml +11 -0
  141. data/apps/todo/views/editPart.rhtml +10 -0
  142. data/apps/todo/views/index.rhtml +2 -0
  143. data/apps/todo/views/question.rhtml +4 -0
  144. data/apps/transparent_network/transparent_network.rb +7 -0
  145. data/apps/udp_network/big_transfer.rb +97 -0
  146. data/apps/udp_network/features/information.feature +7 -0
  147. data/apps/udp_network/message_queue.rb +84 -0
  148. data/apps/udp_network/network_interface_api.rb +39 -0
  149. data/apps/udp_network/qos_queue.rb +186 -0
  150. data/apps/udp_network/simple_api.rb +180 -0
  151. data/apps/udp_network/spec/big_transfer_spec.rb +0 -0
  152. data/apps/udp_network/spec/qos_queue_spec.rb +99 -0
  153. data/apps/udp_network/spec/simple_api_spec.rb +35 -0
  154. data/apps/udp_network/spec/udp_network_spec.rb +115 -0
  155. data/apps/udp_network/spec/udp_transceiver_spec.rb +90 -0
  156. data/apps/udp_network/udp_network.rb +196 -0
  157. data/apps/udp_network/udp_transceiver.rb +329 -0
  158. data/apps/wiki/controllers/wiki.rb +56 -0
  159. data/apps/wiki/features/editing.feature +21 -0
  160. data/apps/wiki/layouts/main.rhtml +18 -0
  161. data/apps/wiki/lib/media_wiki_html.rb +35 -0
  162. data/apps/wiki/lib/wikicreole.rb +2147 -0
  163. data/apps/wiki/lib/wikicreole.tt +135 -0
  164. data/apps/wiki/lib/wikitest.rb +158 -0
  165. data/apps/wiki/lib/wikitest.tt +17 -0
  166. data/apps/wiki/model/menu.rb +15 -0
  167. data/apps/wiki/model/page.rb +31 -0
  168. data/apps/wiki/spec/wiki_creole_spec.rb +20 -0
  169. data/apps/wiki/spec/wiki_spec.rb +19 -0
  170. data/apps/wiki/static/Zeichnung.svg +240 -0
  171. data/apps/wiki/static/home.css +134 -0
  172. data/apps/wiki/static/mainMenu.css +32 -0
  173. data/apps/wiki/static/menu.css +99 -0
  174. data/apps/wiki/views/_mainMenu.rhtml +3 -0
  175. data/apps/wiki/views/_menu.rhtml +13 -0
  176. data/apps/wiki/views/edit.rhtml +13 -0
  177. data/apps/wiki/views/index.rhtml +2 -0
  178. data/apps/wiki/views/save.rhtml +1 -0
  179. data/apps/wiki/wiki.rb +17 -0
  180. data/bin/appswarm +47 -0
  181. data/cucumber.yml +2 -0
  182. data/data/PermaspaceApp/AFS_WikiApp_wiki_config +6 -0
  183. data/data/draft.txt +63 -0
  184. data/docs/appswarm_motivation.graffle +0 -0
  185. data/docs/appswarm_pics.graffle/QuickLook/Preview.pdf +0 -0
  186. data/docs/appswarm_pics.graffle/QuickLook/Thumbnail.tiff +0 -0
  187. data/docs/appswarm_pics.graffle/data.plist +63494 -0
  188. data/docs/appswarm_pics.graffle/image1.tiff +0 -0
  189. data/docs/appswarm_pics.graffle/image2.tif +0 -0
  190. data/docs/appswarm_pics.graffle/image3.tif +0 -0
  191. data/docs/appswarm_pics.graffle/image4.tif +0 -0
  192. data/docs/appswarm_pics.graffle/image5.tiff +0 -0
  193. data/docs/routing.graffle +0 -0
  194. data/features/step_definitions/appstart_steps.rb +28 -0
  195. data/features/step_definitions/cluster_steps.rb +18 -0
  196. data/features/step_definitions/testbed_steps.rb +64 -0
  197. data/features/step_definitions/webapp_steps.rb +257 -0
  198. data/features/support/env.rb +7 -0
  199. data/lib/appswarm.rb +127 -0
  200. data/lib/appswarm/README.txt +67 -0
  201. data/lib/appswarm/app_config.rb +19 -0
  202. data/lib/appswarm/application.rb +267 -0
  203. data/lib/appswarm/breaking_mutex.rb +41 -0
  204. data/lib/appswarm/cluster_funcs.rb +157 -0
  205. data/lib/appswarm/cross_spectool.rb +153 -0
  206. data/lib/appswarm/crypt.rb +10 -0
  207. data/lib/appswarm/crypt/crypto.rb +90 -0
  208. data/lib/appswarm/crypt/rsa_key +15 -0
  209. data/lib/appswarm/crypt/rsa_key.pub +5 -0
  210. data/lib/appswarm/crypt/test.rb +27 -0
  211. data/lib/appswarm/dir_tool.rb +41 -0
  212. data/lib/appswarm/event_api.rb +7 -0
  213. data/lib/appswarm/features_helper.rb +44 -0
  214. data/lib/appswarm/global_service.rb +38 -0
  215. data/lib/appswarm/http.rb +1 -0
  216. data/lib/appswarm/http/http_app.rb +257 -0
  217. data/lib/appswarm/http/http_controller.rb +267 -0
  218. data/lib/appswarm/http/http_provider.rb +80 -0
  219. data/lib/appswarm/http/static/favicon.ico +0 -0
  220. data/lib/appswarm/http/static/javascript/._prototype.js +0 -0
  221. data/lib/appswarm/http/static/javascript/prototype.js +2515 -0
  222. data/lib/appswarm/http/webrick_logger.rb +12 -0
  223. data/lib/appswarm/net_service.rb +69 -0
  224. data/lib/appswarm/package.rb +88 -0
  225. data/lib/appswarm/parallel_each.rb +46 -0
  226. data/lib/appswarm/protocols/protocol_dice.rb +25 -0
  227. data/lib/appswarm/proxy_testing.rb +48 -0
  228. data/lib/appswarm/public_api.rb +35 -0
  229. data/lib/appswarm/routing/matrix_math.rb +57 -0
  230. data/lib/appswarm/routing/pca.rb +211 -0
  231. data/lib/appswarm/routing/routetest.rb +85 -0
  232. data/lib/appswarm/routing/routing.rb +326 -0
  233. data/lib/appswarm/routing/spec/nods_spec.rb +23 -0
  234. data/lib/appswarm/routing/spec/pca_spec.rb +27 -0
  235. data/lib/appswarm/routing/spec/routing_spec.rb +91 -0
  236. data/lib/appswarm/secure_con.rb +437 -0
  237. data/lib/appswarm/secure_connection.rb +79 -0
  238. data/lib/appswarm/secure_marshal.rb +137 -0
  239. data/lib/appswarm/service.rb +76 -0
  240. data/lib/appswarm/simple_marshal.rb +96 -0
  241. data/lib/appswarm/simple_marshal_parser.rb +1243 -0
  242. data/lib/appswarm/simple_marshal_parser.tt +158 -0
  243. data/lib/appswarm/spec/application_spec.rb +50 -0
  244. data/lib/appswarm/spec/cluster_spec.rb +2 -0
  245. data/lib/appswarm/spec/hexdist_spec.rb +13 -0
  246. data/lib/appswarm/spec/http_controller_spec.rb +18 -0
  247. data/lib/appswarm/spec/main_spec.rb +6 -0
  248. data/lib/appswarm/spec/parallel_each_spec.rb +30 -0
  249. data/lib/appswarm/spec/secure_connection_spec.rb +108 -0
  250. data/lib/appswarm/spec/secure_marshal_spec.rb +93 -0
  251. data/lib/appswarm/spec/simple_marshal_spec.rb +87 -0
  252. data/lib/appswarm/spec/tools_spec.rb +13 -0
  253. data/lib/appswarm/spec/whiteboard_spec.rb +20 -0
  254. data/lib/appswarm/spec_helper.rb +18 -0
  255. data/lib/appswarm/test_bed.rb +207 -0
  256. data/lib/appswarm/tools.rb +284 -0
  257. data/lib/appswarm/tools/http_tunnel_client.rb +139 -0
  258. data/lib/appswarm/tools/http_tunnel_common.rb +8 -0
  259. data/lib/appswarm/tools/http_tunnel_server.rb +78 -0
  260. data/lib/appswarm/tools/parser/example_data.simple +102 -0
  261. data/lib/appswarm/tools/parser/match_test.rb +14 -0
  262. data/lib/appswarm/tools/parser/parser_lib.rb +165 -0
  263. data/lib/appswarm/tools/parser/parser_test.rb +104 -0
  264. data/lib/appswarm/tools/parser/spec/parser_spec.rb +44 -0
  265. data/lib/appswarm/tools/pipes.rb +95 -0
  266. data/lib/appswarm/tools/spec/tracing_spec.rb +16 -0
  267. data/lib/appswarm/tools/spec/waiting_queue_spec.rb +15 -0
  268. data/lib/appswarm/tools/thread_tool.rb +61 -0
  269. data/lib/appswarm/tools/tracing.rb +84 -0
  270. data/lib/appswarm/tools/treetop_test.rb +20 -0
  271. data/lib/appswarm/tools/treetop_test_grammar.rb +114 -0
  272. data/lib/appswarm/tools/treetop_test_grammar.tt +7 -0
  273. data/lib/appswarm/tools/waiting_prio_queue.rb +47 -0
  274. data/lib/appswarm/tools/waiting_queue.rb +34 -0
  275. data/lib/appswarm/whiteboard.rb +73 -0
  276. data/nettest.rb +50 -0
  277. data/packages/README.txt +1 -0
  278. data/packages/msandbox/data/packages/store/my.txt +1 -0
  279. data/packages/msandbox/interfaces.rb +172 -0
  280. data/packages/msandbox/old/defa.rb +3 -0
  281. data/packages/msandbox/old/test.rb +14 -0
  282. data/packages/msandbox/old/test2.rb +56 -0
  283. data/packages/msandbox/package.rb +67 -0
  284. data/packages/msandbox/packages/store/config.yml +1 -0
  285. data/packages/msandbox/packages/store/main.rb +27 -0
  286. data/packages/msandbox/packages/store/myinclude.rb +7 -0
  287. data/packages/msandbox/packages/store_test/config.yml +1 -0
  288. data/packages/msandbox/packages/store_test/main.rb +9 -0
  289. data/packages/msandbox/server.rb +146 -0
  290. data/packages/msandbox/test.rb +13 -0
  291. data/packages/msandbox/test2.rb +29 -0
  292. data/templates/web/appswarm/controllers/appswarm.rb +41 -0
  293. data/templates/web/appswarm/layouts/main.rhtml +20 -0
  294. data/templates/web/appswarm/models/asmenu.rb +14 -0
  295. data/templates/web/appswarm/models/asuser.rb +30 -0
  296. data/templates/web/appswarm/static/custom.css +15 -0
  297. data/templates/web/appswarm/static/home.css +134 -0
  298. data/templates/web/appswarm/static/mainMenu.css +32 -0
  299. data/templates/web/appswarm/static/menu.css +99 -0
  300. data/templates/web/appswarm/views/_mainMenu.rhtml +5 -0
  301. data/templates/web/appswarm/views/_menu.rhtml +13 -0
  302. data/templates/web/appswarm/views/_userInfo.rhtml +7 -0
  303. data/templates/web/appswarm/views/login.rhtml +9 -0
  304. data/tools/checkPort.rb +11 -0
  305. metadata +379 -0
@@ -0,0 +1,153 @@
1
+
2
+ require 'pp'
3
+
4
+
5
+ $MY_KERNEL=self
6
+ def kernel
7
+ $MY_KERNEL
8
+ end
9
+ module Spec
10
+ module Matchers
11
+ class Cross
12
+ @@called={}
13
+ @@backtrace={}
14
+ @@raiseException={}
15
+ def initialize(target,function,raiseException=false)
16
+ @target=target
17
+ @function=function
18
+ @expected="#{target}.#{function}(.)"
19
+ @@raiseException[@expected]=raiseException
20
+ end
21
+ def matches?(proc)
22
+ @proc = proc
23
+ callName=@expected
24
+ @@called[callName]=0
25
+
26
+ if @target.is_a?(Class) and @target.singleton_methods.member?(@function.to_s)
27
+ mclass=@target
28
+
29
+ function=@function
30
+ oldFunction=@target.method(@function)
31
+ mclass.define_cmethod(@function) do
32
+ Cross.symCall(callName)
33
+ end
34
+
35
+ @proc.call
36
+ mclass.define_cmethod(@function,oldFunction)
37
+
38
+ return @@called[callName]>0
39
+
40
+ end
41
+ @callName=callName
42
+ mclass=@target
43
+ mclass=@target.class unless @target.is_a?(Class)
44
+
45
+ oldFunction=mclass.instance_method(@function)
46
+ mclass.send(:define_method,@function) do
47
+ Cross.symCall(callName)
48
+ end
49
+ @proc.call
50
+ mclass.send(:define_method,@function,oldFunction)
51
+ @@called[callName]>0
52
+ end
53
+ def failure_message
54
+ "expected #{@proc.inspect} to call #{@expected}"
55
+ end
56
+ def negative_failure_message
57
+ bt=""
58
+ bt=@@backtrace[@callName].join("\n") if @@backtrace[@callName]
59
+ #printStacktrace
60
+ "expected #{@proc.inspect} not to call #{@expected} BT:#{bt}"
61
+ end
62
+ def Cross.symCall(name)
63
+ @@called[name]+=1
64
+ @@backtrace[name]=caller
65
+ raise "Should never cross this" if @@raiseException[name]
66
+ nil
67
+ end
68
+ end
69
+
70
+ # :call-seq:
71
+ # should cross()
72
+ def cross(target,function=nil,raiseException=false)
73
+ if function.nil? and target.is_a?(Symbol)
74
+ function=target
75
+ target=kernel
76
+ end
77
+
78
+ Cross.new(target,function,raiseException)
79
+ end
80
+
81
+
82
+ class Observer
83
+ #attr_accessor :ok
84
+ attr_accessor :count
85
+ def initialize(object,methodName)
86
+ @methodName=methodName
87
+ @object=object
88
+ #@ok=false
89
+ @count=0
90
+ end
91
+ def run
92
+ method=@object.method(@methodName)
93
+ this=self
94
+ object=@object
95
+ @object.class.send(:define_method,@methodName) {|*s|
96
+ if self==object
97
+ #this.ok=true
98
+ this.count+=1
99
+ puts "MUH"
100
+ end
101
+ method.call(*s)
102
+ }
103
+ yield
104
+ @object.class.send(:define_method,@methodName,method)
105
+ #@ok
106
+ called?
107
+ end
108
+ def isNotCalled
109
+ @count==0
110
+ # @ok==false
111
+ end
112
+ def isCalled
113
+ @count>0
114
+ #@ok==true
115
+ end
116
+ def called?(count=0,sym=:times)
117
+ case sym
118
+ when :times
119
+ @count>count
120
+ else
121
+ raise "Unknown symbol"
122
+ end
123
+ end
124
+ end
125
+
126
+ def observe(object,method,&block)
127
+ observer=Observer.new(object,method)
128
+
129
+ observer.run {block.call(observer)}
130
+ observer
131
+ end
132
+
133
+ end
134
+ end
135
+
136
+ if false
137
+ class Object
138
+ def method_missing(name,*s)
139
+ alt=name.to_s.gsub(/\?$/,"")
140
+ puts alt
141
+ if respond_to?(alt) and alt!=name
142
+ self.send(alt,*s)
143
+ elsif respond_to?(alt.camelCase) and alt!=name and alt.camelCase!=alt
144
+ self.send(alt.camelCase,*s)
145
+ else
146
+ super
147
+ end
148
+
149
+ end
150
+ end
151
+
152
+
153
+ end
@@ -0,0 +1,10 @@
1
+ require 'rubygems/digest/sha2.rb'
2
+
3
+ module Crypt
4
+ def self.digest(input)
5
+ Digest::SHA2::digest(input.to_s)
6
+ end
7
+ def self.hexdigest(input)
8
+ Digest::SHA2::hexdigest(input.to_s)
9
+ end
10
+ end
@@ -0,0 +1,90 @@
1
+ require 'openssl'
2
+ require 'base64'
3
+
4
+ # Documentation at http://net-ssh.rubyforge.org/api/classes/OpenSSL/PKey/RSA.html
5
+ module Crypto
6
+
7
+ def self.create_keys(priv = "rsa_key", pub = "#{priv}.pub", bits = 1024)
8
+ private_key = OpenSSL::PKey::RSA.new(bits)
9
+ File.open(priv, "w+") { |fp| fp << private_key.to_s }
10
+ File.open(pub, "w+") { |fp| fp << private_key.public_key.to_s }
11
+ private_key
12
+ end
13
+
14
+ def self.generate_secret_with_openssl
15
+ if !File.exist?("/dev/urandom")
16
+ # OpenSSL transparently seeds the random number generator with
17
+ # data from /dev/urandom. On platforms where that is not
18
+ # available, such as Windows, we have to provide OpenSSL with
19
+ # our own seed. Unfortunately there's no way to provide a
20
+ # secure seed without OS support, so we'll have to do with
21
+ # rand() and Time.now.usec().
22
+ OpenSSL::Random.seed(rand(0).to_s + Time.now.usec.to_s)
23
+ end
24
+ data = OpenSSL::BN.rand(2048, -1, false).to_s
25
+ return Base64.encode64(OpenSSL::Digest::SHA1.digest(data)).chomp
26
+ end
27
+
28
+ def self.doHmac(secret, payload)
29
+ key = Base64.decode64(secret)
30
+ hashmac = OpenSSL::HMAC.digest(OpenSSL::Digest::SHA1.new(key), key, payload)
31
+ Base64.encode64(hashmac).chomp
32
+ end
33
+
34
+ def self.doSha1(text)
35
+ Base64.encode64(OpenSSL::Digest::SHA1.digest(text)).chomp
36
+ end
37
+
38
+ class Key
39
+ def initialize(data)
40
+ #@public = (data =~ /^-----BEGIN (RSA|DSA) PRIVATE KEY-----$/).nil?
41
+ @public = false
42
+ @key = OpenSSL::PKey::RSA.new(data)
43
+ end
44
+
45
+ def self.from_file(filename)
46
+ self.new File.read( filename )
47
+ end
48
+
49
+ def encrypt(text)
50
+ Base64.encode64(@key.send("#{key_type}_encrypt", text))
51
+ end
52
+
53
+ def sign(text)
54
+ Base64.encode64(@key.send("sign", OpenSSL::Digest::SHA1.new, text))
55
+ end
56
+
57
+ def sign_other(text)
58
+ digest = OpenSSL::Digest::SHA1.new(text).to_s
59
+ encrypt(digest)
60
+ end
61
+
62
+ def sign_other1(text)
63
+ digest = OpenSSL::Digest::SHA1.new
64
+ text.each_byte{ |c| digest.update(c.to_s) }
65
+ digest = digest.hexdigest
66
+ encrypt(digest)
67
+ end
68
+
69
+ def verify(sig, text)
70
+ @key.send("verify", OpenSSL::Digest::SHA1.new, Base64.decode64(sig), text)
71
+ end
72
+
73
+ def decrypt(text)
74
+ @key.send("#{key_type}_decrypt", Base64.decode64(text))
75
+ end
76
+
77
+ def private?
78
+ !@public
79
+ end
80
+
81
+ def public?
82
+ @public
83
+ end
84
+
85
+ def key_type
86
+ @public ? :public : :private
87
+ end
88
+ end
89
+
90
+ end
@@ -0,0 +1,15 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIICXAIBAAKBgQDiJtGg3LZwMRx9XlS59o8zLIvutLBxhp8KpVz3AogR7QteYlT7
3
+ 3S7tzDa/FirSmxeEWySa9ekoVMYbrYfg4SWohcqWfdOnMWvROQlsTm19WCDbyaQE
4
+ bsg0y/o6Q196VSA/4HirIEeaH+5dueKiBm7fW9odVyfuNO9Q3B5h5uTIFwIDAQAB
5
+ AoGALu4fUmJ6+Y03fEy3CGBCFzyHTWHxu51UI8FtKVU9J3spgMynFh0wP+jA86aF
6
+ /G5y0uSXFBEz8UqmUdgQ+nm+dnZAct72vy4AhdCbztZS9/+Tk7zLc2N7OxNSCb+R
7
+ O3WsQSjG7i9aMgwC8IydMlZbwYUGgoRrkuZRsVKjM3WYnwECQQD/v3ENqAv3GXc7
8
+ /hfm4KIM10K0WlE5GmOBL4RlnbdgzcesW75I9K69AmZ4stW/C0DVUqYEaZoBKaj8
9
+ dMf+3YFDAkEA4l/oAlxukHa41naPGAFxiIJ1PHTDy2PBW2kvNct+J/qy1piT4DOS
10
+ HxAr+AsS/QjRG8L1Al2Dc4j5tlDwx+BWnQJBAKUgq9NAfLFIHQd8UVx+D8OwvV4L
11
+ rsPq+PJxhs/BnKSBWXo9Jkiey7A4O4eVGJOopWzXV2Aj+w7jIjwW/wbdaFcCQBov
12
+ l+n2AUAqy5TbYBAZ0qVE2gTlSOTVJD/Lug9R+8TqJhfWzHxJ2uRG/Z8SwN6OT4oT
13
+ kj30zUjnFmO1lzS3ya0CQGA8MTZza+pKiIf2/M0+p2tW0yQ+wzDlFhf0y8MgwvoS
14
+ Mc1AZx7HiPhWV0V64TKA72FvqlLHYRKlppJ/ubxRcZc=
15
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,5 @@
1
+ -----BEGIN RSA PUBLIC KEY-----
2
+ MIGJAoGBAOIm0aDctnAxHH1eVLn2jzMsi+60sHGGnwqlXPcCiBHtC15iVPvdLu3M
3
+ Nr8WKtKbF4RbJJr16ShUxhuth+DhJaiFypZ906cxa9E5CWxObX1YINvJpARuyDTL
4
+ +jpDX3pVID/geKsgR5of7l254qIGbt9b2h1XJ+4071DcHmHm5MgXAgMBAAE=
5
+ -----END RSA PUBLIC KEY-----
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'crypto.rb'
4
+
5
+ require 'pp'
6
+
7
+ ok=Crypto.create_keys
8
+ pp ok
9
+
10
+ k=Crypto::Key.new(ok.to_s)
11
+
12
+ meinText="ksdfsdfsfsdfsdfsdfsdfsdfh sdhkdf dfuoh dfoudfh dfouh dfoudfh dfoh"
13
+ puts meinText
14
+ sig=k.sign(meinText)
15
+
16
+
17
+ pp k.verify(sig,meinText)
18
+
19
+ pk=Crypto::Key.new(ok.public_key.to_s)
20
+
21
+
22
+ pp pk.verify(sig,meinText)
23
+
24
+ pp pk.respond_to?(:private_key)
25
+
26
+ #pk.sign(meinText)
27
+
@@ -0,0 +1,41 @@
1
+ class MDir
2
+ def initialize(path)
3
+ @path=path
4
+ @files=[]
5
+ @dirs=[]
6
+ end
7
+ def file(f)
8
+ @files << f
9
+ end
10
+ def files(*f)
11
+ @files += f
12
+ end
13
+ def dir(name,&p)
14
+ dir = MDir.new(name)
15
+ dir.instance_eval(&p)
16
+ @dirs << dir
17
+ end
18
+ def dirs(*names,&p)
19
+ names.each{|name|
20
+ dir=MDir.new(name)
21
+ dir.instance_eval(&p)
22
+ @dirs << dir
23
+ }
24
+ end
25
+ def gather(base="")
26
+ a=[]
27
+ @files.each{|f|
28
+ a+=Dir[File.join(@path,f)]
29
+ }
30
+ @dirs.each{|dir|
31
+ a+=dir.gather(@path)
32
+ }
33
+ a
34
+ end
35
+ end
36
+
37
+ def dir(path,&p)
38
+ d=MDir.new(path)
39
+ d.instance_eval(&p)
40
+ d.gather
41
+ end
@@ -0,0 +1,7 @@
1
+ module EventAPI
2
+ def self.event(name)
3
+ onName=name[0..0].upper+name[1..-1]
4
+ pp self
5
+ exit
6
+ end
7
+ end
@@ -0,0 +1,44 @@
1
+ require 'pp'
2
+ require 'ftools.rb'
3
+ $: << File.expand_path("../..",__FILE__)
4
+ $: << File.expand_path("..",__FILE__)
5
+ Dir[File.expand_path("../../../apps/*",__FILE__)].each{|d|$: << d if File.directory?(d)}
6
+
7
+ require 'cluster_funcs.rb'
8
+ require 'tools.rb'
9
+ require 'package.rb'
10
+
11
+ require 'cross_spectool.rb'
12
+ require 'proxy_testing.rb'
13
+ require 'appswarm.rb'
14
+
15
+
16
+
17
+
18
+
19
+
20
+ # checks if there are still some threads running in between test cases
21
+ def checkThreads(time)
22
+ if Thread.list.select{|t|t.stacktrace?}.length>1
23
+ puts "checkThreads may fail"
24
+ Thread.current.printOthers
25
+ end
26
+
27
+ "#{Thread.list.select{|t|t.alive?}.select{|t|t.stacktrace?}.length} #{time}".should == "1 #{time}"
28
+ TestBed.testbeds.length.should == 0
29
+ end
30
+
31
+ class TestLogger
32
+ @@file=nil
33
+ def self.log(*x)
34
+ unless @@file
35
+ path=File.expand_path('../../test.log',__FILE__)
36
+ @@file=File.open(path,"w+")
37
+ end
38
+ @@file.puts x.inspect
39
+ @@file.flush
40
+ end
41
+ end
42
+
43
+
44
+ require 'appswarm/test_bed.rb'
@@ -0,0 +1,38 @@
1
+ require 'application.rb'
2
+
3
+ GlobalServiceID=Struct.new(:name,:type,:provides)
4
+
5
+ class GlobalService<Application
6
+
7
+ def initialize(cluster,options,name)
8
+ super(cluster,options)
9
+ @name=name
10
+ provides(name)
11
+ end
12
+ def cronTime
13
+ @options[:cronTime]||10
14
+ end
15
+
16
+ def serviceID
17
+ GlobalServiceID.new(@name,self.class.to_s,providingAPIs)
18
+ end
19
+
20
+ def run
21
+ loop do
22
+ begin
23
+ cron
24
+ rescue Object=>e
25
+ log e
26
+ log e.backtrace if e.is_a?(Exception)
27
+ end
28
+ sleep(cronTime)
29
+ end
30
+ end
31
+ def stop
32
+
33
+ end
34
+ def cron
35
+
36
+ end
37
+
38
+ end