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,158 @@
1
+ grammar SimpleMarshal
2
+
3
+ rule Elements
4
+ Fill e:Element Fill {
5
+ def sload
6
+ e.sload
7
+ end
8
+ }
9
+ end
10
+ rule Element
11
+ Fill e:RElement Fill {
12
+ def sload
13
+ e.sload
14
+ end
15
+ }
16
+ end
17
+ rule RElement
18
+ Struct / Hash / Symbol / String / Array / Boolean / Nil / Number
19
+ end
20
+
21
+ rule Symbol
22
+ ':' name:([_a-zA-Z] [0-9a-zA-Z_]*) {
23
+ def sload
24
+ name.text_value.to_sym
25
+ end
26
+ }
27
+ end
28
+
29
+ rule Boolean
30
+ 'true' {
31
+ def sload
32
+ true
33
+ end
34
+ }
35
+ /
36
+ 'false' {
37
+ def sload
38
+ false
39
+ end
40
+ }
41
+ end
42
+ rule Nil
43
+ 'nil' {
44
+ def sload
45
+ nil
46
+ end
47
+ }
48
+ end
49
+
50
+ rule Hash
51
+ '{' Fill '}' {
52
+ def sload
53
+ {}
54
+ end
55
+ }
56
+ /
57
+ '{' l:HashList '}' {
58
+ def sload
59
+ l.sload
60
+ end
61
+ }
62
+
63
+ end
64
+
65
+ rule HashList
66
+ k:Element '=>' v:Element mein_rest:(',' ek:Element '=>' ev:Element)* {
67
+ def sload
68
+ h={}
69
+ h[k.sload]=v.sload
70
+ mein_rest.elements.each{|x|
71
+ h[x.ek.sload]=x.ev.sload
72
+ }
73
+ h
74
+ end
75
+ }
76
+ end
77
+
78
+ rule Number
79
+ '-'? [0-9]* ('.' [0-9]*)? {
80
+ def sload
81
+ s=text_value
82
+ if s=~/\./
83
+ return s.to_f
84
+ else
85
+ return s.to_i
86
+ end
87
+ end
88
+ }
89
+ end
90
+
91
+ rule String
92
+ '"' ('\\' . / [^"\\] )* '"' {
93
+ def sload
94
+ #pp "TV:",text_value
95
+ text_value[1..-2].gsub("\\n","\n").gsub("\\\"","\"").gsub("\\\\","\\")
96
+ end
97
+ }
98
+ end
99
+ rule Fill
100
+ Whitespaces
101
+ end
102
+ rule Whitespaces
103
+ Whitespace*
104
+ end
105
+ rule Whitespace
106
+ ' ' / "\n" / "\t"
107
+ end
108
+ rule Array
109
+ '[' Fill ']' {
110
+ def sload
111
+ []
112
+ end
113
+ }
114
+ /
115
+ '[' e:ElementList ']' {
116
+ def sload
117
+ e.sload
118
+ end
119
+ }
120
+ end
121
+ rule ElementList
122
+ e:Element mein_rest:(',' el:Element)* {
123
+ def sload
124
+ [e.sload]+mein_rest.elements.map{|x|x.el.sload}
125
+ end
126
+ }
127
+ end
128
+
129
+ rule StructName
130
+ [A-Z] [A-Za-z0-9_:]*
131
+ end
132
+
133
+ rule Any
134
+ .*
135
+ end
136
+
137
+ rule Struct
138
+ '(' name:StructName Whitespace l:HashList ')' {
139
+ def sload
140
+ klass=getClass(name.text_value)
141
+ mo=nil
142
+ hash=l.sload
143
+ if klass==Time
144
+ mo=Time.parse(hash[:data])
145
+ else
146
+ mo=klass.new
147
+ hash.each{|k,v|
148
+ k=k.to_s
149
+ mo.send(k+"=",v) if mo.members.member?(k) and mo.respond_to?(k+"=")
150
+ }
151
+ end
152
+ mo
153
+
154
+ end
155
+ }
156
+ end
157
+
158
+ end
@@ -0,0 +1,50 @@
1
+ require 'application.rb'
2
+
3
+ describe "Application" do
4
+ it "should define an API based upon the 'api'-function" do
5
+ class MyApp<Application
6
+ def myFunc
7
+ end
8
+ def a(x,y)
9
+ x+y
10
+ end
11
+
12
+ api :myFunc,:a
13
+ end
14
+
15
+ app=MyApp.new(nil,{})
16
+ lambda {app.api(:myFunc)}.should_not raise_error(AccessViolationException)
17
+ lambda {app.api(:a,3,4)}.should_not raise_error(AccessViolationException)
18
+ app.api(:a,5,7).should == 12
19
+ lambda {app.api(:myFunc2)}.should raise_error(AccessViolationException)
20
+ end
21
+
22
+
23
+ it "APIs should not collide" do
24
+ class A<Application
25
+ def a(x,y)
26
+ x+y
27
+ end
28
+ api :a
29
+ end
30
+
31
+
32
+ class B<Application
33
+ def b(x,y)
34
+ x-y
35
+ end
36
+ api :b
37
+ end
38
+ a=A.new(nil,{})
39
+ b=B.new(nil,{})
40
+
41
+ lambda {a.api(:a,3,4)}.should_not raise_error(AccessViolationException)
42
+ lambda {a.api(:b,3,4)}.should raise_error(AccessViolationException)
43
+ a.api(:a,3,4).should == 7
44
+ lambda {b.api(:a,3,4)}.should raise_error(AccessViolationException)
45
+ lambda {b.api(:b,3,4)}.should_not raise_error(AccessViolationException)
46
+ b.api(:b,3,4).should == -1
47
+
48
+ end
49
+
50
+ end
@@ -0,0 +1,2 @@
1
+ describe "Cluster" do
2
+ it "should only export GlobalServices within cluster.getGlobalServices"
@@ -0,0 +1,13 @@
1
+ require 'ubygems'
2
+ require 'crypt.rb'
3
+
4
+ describe "Computing Hex-Dist" do
5
+ it "should work on hashes" do
6
+ a=Crypt::digest("asdf1")
7
+ b=Crypt::digest("asdf2")
8
+ c=Crypt::digest("asdf3")
9
+ pp a,b,hexDist(a,b)
10
+ pp a,c,hexDist(a,c)
11
+
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+
2
+ require 'http/http_app.rb'
3
+
4
+ describe "HttpController loading" do
5
+ it "should desc" do
6
+ b=TestBed.new
7
+ b.run("Admin")
8
+
9
+ pp 1
10
+ getClass("AdminApp").should_not be_nil
11
+ pp 2
12
+ getClass("Admin").should be_nil
13
+ pp 3
14
+ getClass("AdminApp::Admin").should_not be_nil
15
+ pp 4
16
+ end
17
+ end
18
+
@@ -0,0 +1,6 @@
1
+ describe "Main program" do
2
+ it "should startup with limited set of applications only"
3
+ it "should load configured programs in the set state"
4
+ it "should provide a simple way to stop the cluster"
5
+ it "should open a browser when starting up"
6
+ end
@@ -0,0 +1,30 @@
1
+ require 'parallel_each.rb'
2
+ require 'pp'
3
+
4
+ describe "Parallelizing each/map" do
5
+ it_should_behave_like "AppSwarm Test"
6
+ it "should work at all" do
7
+ Thread.list.select{|t|t.alive?}.length.should == 1
8
+ ma=[]
9
+ mutex=Mutex.new
10
+ a=(0..10).to_a
11
+ a.p_each{|x|sleep rand(0.3); puts x;
12
+ mutex.synchronize {
13
+ ma<<x
14
+ }
15
+ }
16
+ while ma.length<a.length
17
+ sleep 0.1
18
+ end
19
+ ma.sort.should == a
20
+ Thread.list.select{|t|t.alive?}.length.should == 1
21
+ end
22
+ it "should work for adding 1 in map" do
23
+ a=(0..10).to_a
24
+ a.p_map do |x|
25
+ sleep rand(0.2)
26
+ x+1
27
+ end.should == a.map{|x|x+1}
28
+ Thread.list.select{|t|t.alive?}.length.should == 1
29
+ end
30
+ end
@@ -0,0 +1,108 @@
1
+ require 'secure_marshal.rb'
2
+ require 'secure_con.rb'
3
+
4
+ describe "secure connection" do
5
+ it "should be possible to setup a server and take it down" do
6
+ s=Secure::Server.new(7777)
7
+ s.stop
8
+ end
9
+
10
+ it "should be possible to connect a server" do
11
+ s=Secure::Server.new(7777)
12
+ o=Secure::Server.new(7778)
13
+ c=o.connect("127.0.0.1",7777)
14
+ pp "C:#{c}"
15
+ while s.connections.length<1
16
+ sleep 0.01
17
+ end
18
+ c2=s.connections[0]
19
+ c.send(:hi,"MUH")
20
+ c2.send(:smoerebroed)
21
+ c.send(:hdfi,["M3fUH",1])
22
+ c.send(:hdfi,["M3fUH",1])
23
+ c.send(:hdfi,["M3fUH",1])
24
+ c2.should be_a_kind_of(Secure::Connection)
25
+ #c2.disconnect
26
+ c2.send(:smoerebroed)
27
+
28
+
29
+ 2.times do
30
+ sleep 0.1
31
+ end
32
+ puts s.messages
33
+ puts o.messages
34
+ s.stop
35
+ end
36
+ end
37
+ if false
38
+
39
+ describe "Simple server" do
40
+ class MyException<Exception
41
+
42
+ end
43
+ class MyServer<Secure::SimpleServer
44
+ allow :hi, :ho, :throwing, :echo
45
+ remote :hi
46
+ remote_sync :ho, :throwing, :echo
47
+
48
+ def hi
49
+ $HI=true
50
+ puts "HI"
51
+ end
52
+ def ho
53
+ "HO"
54
+ end
55
+ def echo(s)
56
+ s
57
+ end
58
+
59
+ def throwing
60
+ raise MyException.new
61
+ end
62
+ end
63
+ it "should be possible to call a remote procedure thus" do
64
+ puts "-----"
65
+ a=MyServer.new(8888)
66
+ b=MyServer.new(8889)
67
+ a.connect("127.0.0.1",8889)
68
+ a.connections[0].hi
69
+ sleep 0.5 # give time to let procedure set $HI
70
+ $HI.should be_true
71
+ a.stop
72
+ b.stop
73
+ end
74
+
75
+ it "should be possible to call a remote function" do
76
+ a=MyServer.new(8884)
77
+ b=MyServer.new(8885)
78
+ a.connect("127.0.0.1",8885)
79
+ a.connections[0].ho.should == "HO"
80
+ #pp a.connections,b.connections
81
+ a.connections.length.should == 1
82
+ b.connections.length.should == 1
83
+ a.stop
84
+ b.stop
85
+ end
86
+
87
+ if false
88
+ it "should pass exceptions through network" do
89
+ a=MyServer.new(8883)
90
+ b=MyServer.new(8882)
91
+ c=a.connect("127.0.0.1",8882)
92
+ lambda {c.throwing}.should raise_error(Secure::RemoteException)
93
+ a.stop
94
+ b.stop
95
+ end
96
+ end
97
+
98
+ it "should be possible to pass any string" do
99
+ s=(0..255).to_a.map{|i|i.chr}.join("")
100
+ s=s*2
101
+ a=MyServer.new(8883)
102
+ b=MyServer.new(8882)
103
+ c=a.connect("127.0.0.1",8882)
104
+ c.echo(s).should == s
105
+ end
106
+ end
107
+
108
+ end
@@ -0,0 +1,93 @@
1
+ require 'secure_marshal.rb'
2
+
3
+ describe "secure marshaling", :shared=>true do
4
+ it "should encode/decode integers" do
5
+ check(20)
6
+ check(-30)
7
+ check(123874)
8
+ checkAdd(3874,"crap")
9
+ end
10
+
11
+ it "should en/dec nil/true/false" do
12
+ check(nil)
13
+ check(true)
14
+ check(false)
15
+ end
16
+
17
+ it "should encode/decode floats" do
18
+ checkAdd(347374.34,"lsdf")
19
+ end
20
+
21
+ it "should encode/decode strings" do
22
+ checkAdd("HI","lsdf")
23
+ checkAdd("HI:HI","lsdf")
24
+ checkAdd("123:HIdff","lsdf:sdfjhd")
25
+ end
26
+
27
+ it "should decode's:i:3:muh'correctly" do
28
+ Secure::Marshal::load('s:i:3:muh').should == "muh"
29
+ end
30
+ it "should encode/decode arrays" do
31
+ check([1,2,3,"muh"])
32
+ check([])
33
+ check(nil)
34
+ check([nil])
35
+ end
36
+
37
+ it "should encode/decode hashes" do
38
+ check({1=>2,"asd"=>5.6,[1]=>"kjsdf"})
39
+ end
40
+
41
+ it "should encode symbols" do
42
+ check(:symbol)
43
+ end
44
+
45
+ it "should encode simple structs" do
46
+ S=Struct.new(:hupe,:bla)
47
+ s=S.new("123",348)
48
+ pp "S:",s
49
+ check(s)
50
+ end
51
+
52
+ it "should support dissected strings" do
53
+ s="abcdefghijkl"
54
+ check(s)
55
+ m=Secure::Marshal::dump(s)
56
+ pp s,m
57
+ split=m.length/2
58
+ a=m[0...split]
59
+ b=m[split..-1]
60
+ puts "---1"
61
+ (a+b).should == m
62
+ d=Secure::Data.new(a)
63
+ lambda{Secure::Marshal::load(d)}.should raise_error(Secure::Marshal::OutOfData)
64
+ Secure::Marshal::load(m).should == s
65
+ Secure::Marshal::load(a+b).should == s
66
+ end
67
+
68
+
69
+ it "should support any character in strings" do
70
+ (0..255).each{|i|
71
+ s=i.to_s+" "+i.chr
72
+ check(s)
73
+ }
74
+
75
+ s=(0..255).to_a.map{|i|i.chr}.join("")
76
+ #s=s*2
77
+ s=s[(s.length/2)..(s.length*17/32)]
78
+ check(s)
79
+ end
80
+
81
+
82
+ private
83
+
84
+ def checkAdd(input,add)
85
+ data=Secure::Marshal::dump(input)+add
86
+ Secure::Marshal::load(data).should == input
87
+ end
88
+
89
+ def check(input)
90
+ data=Secure::Marshal::dump(input)
91
+ Secure::Marshal::load(data).should == input
92
+ end
93
+ end