jiji 1.2.5

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 (670) hide show
  1. data/ChangeLog +58 -0
  2. data/README +1 -0
  3. data/base/agents/moving_average_agent.rb +78 -0
  4. data/base/shared_lib/moving_average.rb +35 -0
  5. data/base/shared_lib/system/cross.rb +76 -0
  6. data/base/shared_lib/system/position_manager.rb +160 -0
  7. data/base/shared_lib/system/signal.rb +347 -0
  8. data/bin/jiji +5 -0
  9. data/html/css/calendar.css +432 -0
  10. data/html/css/datatable.css +299 -0
  11. data/html/css/default.css +627 -0
  12. data/html/css/dialog.css +77 -0
  13. data/html/css/treeview.css +205 -0
  14. data/html/img/auto_trade_off.gif +0 -0
  15. data/html/img/auto_trade_on.gif +0 -0
  16. data/html/img/back_bottom.gif +0 -0
  17. data/html/img/back_middle.gif +0 -0
  18. data/html/img/back_top.gif +0 -0
  19. data/html/img/bin_closed.png +0 -0
  20. data/html/img/bin_empty.png +0 -0
  21. data/html/img/bt-create-title-1.gif +0 -0
  22. data/html/img/bt-create-title-2.gif +0 -0
  23. data/html/img/bt-create-title-3.gif +0 -0
  24. data/html/img/button_add.gif +0 -0
  25. data/html/img/button_add_gray.gif +0 -0
  26. data/html/img/button_add_over.gif +0 -0
  27. data/html/img/button_add_small.gif +0 -0
  28. data/html/img/button_add_small_gray.gif +0 -0
  29. data/html/img/button_add_small_over.gif +0 -0
  30. data/html/img/button_apply.gif +0 -0
  31. data/html/img/button_apply_gray.gif +0 -0
  32. data/html/img/button_apply_over.gif +0 -0
  33. data/html/img/button_calendar.gif +0 -0
  34. data/html/img/button_calendar_over.gif +0 -0
  35. data/html/img/button_cancel.gif +0 -0
  36. data/html/img/button_cancel.jpg +0 -0
  37. data/html/img/button_cancel_gray.gif +0 -0
  38. data/html/img/button_cancel_over.gif +0 -0
  39. data/html/img/button_cancel_over.jpg +0 -0
  40. data/html/img/button_close.gif +0 -0
  41. data/html/img/button_close_gray.gif +0 -0
  42. data/html/img/button_close_over.gif +0 -0
  43. data/html/img/button_mkcol.gif +0 -0
  44. data/html/img/button_mkcol_gray.gif +0 -0
  45. data/html/img/button_mkcol_over.gif +0 -0
  46. data/html/img/button_no.gif +0 -0
  47. data/html/img/button_no_gray.gif +0 -0
  48. data/html/img/button_no_over.gif +0 -0
  49. data/html/img/button_ok.gif +0 -0
  50. data/html/img/button_ok_gray.gif +0 -0
  51. data/html/img/button_ok_over.gif +0 -0
  52. data/html/img/button_remove.gif +0 -0
  53. data/html/img/button_remove_gray.gif +0 -0
  54. data/html/img/button_remove_over.gif +0 -0
  55. data/html/img/button_remove_small.gif +0 -0
  56. data/html/img/button_remove_small_gray.gif +0 -0
  57. data/html/img/button_remove_small_over.gif +0 -0
  58. data/html/img/button_rename.gif +0 -0
  59. data/html/img/button_rename_gray.gif +0 -0
  60. data/html/img/button_rename_over.gif +0 -0
  61. data/html/img/button_save.gif +0 -0
  62. data/html/img/button_save_gray.gif +0 -0
  63. data/html/img/button_save_over.gif +0 -0
  64. data/html/img/button_start.gif +0 -0
  65. data/html/img/button_start_over.gif +0 -0
  66. data/html/img/button_update.gif +0 -0
  67. data/html/img/button_update_gray.gif +0 -0
  68. data/html/img/button_update_over.gif +0 -0
  69. data/html/img/button_update_s.gif +0 -0
  70. data/html/img/button_update_s_gray.gif +0 -0
  71. data/html/img/button_update_s_over.gif +0 -0
  72. data/html/img/button_yes.gif +0 -0
  73. data/html/img/button_yes_gray.gif +0 -0
  74. data/html/img/button_yes_over.gif +0 -0
  75. data/html/img/circle.gif +0 -0
  76. data/html/img/control_play.png +0 -0
  77. data/html/img/control_play_blue.png +0 -0
  78. data/html/img/delta.gif +0 -0
  79. data/html/img/dialog_info.jpg +0 -0
  80. data/html/img/dialog_input.jpg +0 -0
  81. data/html/img/dialog_warn.jpg +0 -0
  82. data/html/img/dt-arrow-dn.png +0 -0
  83. data/html/img/dt-arrow-up.png +0 -0
  84. data/html/img/folder.png +0 -0
  85. data/html/img/folder_brick.png +0 -0
  86. data/html/img/folder_user.png +0 -0
  87. data/html/img/foot.jpg +0 -0
  88. data/html/img/goto.gif +0 -0
  89. data/html/img/goto_o.gif +0 -0
  90. data/html/img/h3_bt-create_0.gif +0 -0
  91. data/html/img/h3_bt-create_1.gif +0 -0
  92. data/html/img/h3_bt-create_2.gif +0 -0
  93. data/html/img/h3_result_0.gif +0 -0
  94. data/html/img/h3_result_1.gif +0 -0
  95. data/html/img/h3_result_2.gif +0 -0
  96. data/html/img/h3_result_3.gif +0 -0
  97. data/html/img/h3_result_4.gif +0 -0
  98. data/html/img/h3_result_5.gif +0 -0
  99. data/html/img/h3_result_6.gif +0 -0
  100. data/html/img/h3_rt-setting_0.gif +0 -0
  101. data/html/img/h3_rt-setting_1.gif +0 -0
  102. data/html/img/head.jpg +0 -0
  103. data/html/img/line-numbers.png +0 -0
  104. data/html/img/line_white.gif +0 -0
  105. data/html/img/loading.gif +0 -0
  106. data/html/img/page_white_ruby.png +0 -0
  107. data/html/img/panel_100_bottom.gif +0 -0
  108. data/html/img/panel_100_middle.gif +0 -0
  109. data/html/img/panel_100_top.gif +0 -0
  110. data/html/img/panel_140_650_b.gif +0 -0
  111. data/html/img/panel_140_650_m.gif +0 -0
  112. data/html/img/panel_140_650_t.gif +0 -0
  113. data/html/img/panel_140_660_b.gif +0 -0
  114. data/html/img/panel_140_660_m.gif +0 -0
  115. data/html/img/panel_140_660_t.gif +0 -0
  116. data/html/img/panel_140_b.gif +0 -0
  117. data/html/img/panel_140_m.gif +0 -0
  118. data/html/img/panel_140_t.gif +0 -0
  119. data/html/img/panel_260_b.gif +0 -0
  120. data/html/img/panel_260_m.gif +0 -0
  121. data/html/img/panel_260_t.gif +0 -0
  122. data/html/img/panel_300_b.gif +0 -0
  123. data/html/img/panel_300_m.gif +0 -0
  124. data/html/img/panel_300_t.gif +0 -0
  125. data/html/img/panel_320_b.gif +0 -0
  126. data/html/img/panel_320_m.gif +0 -0
  127. data/html/img/panel_320_t.gif +0 -0
  128. data/html/img/panel_360_b.gif +0 -0
  129. data/html/img/panel_360_m.gif +0 -0
  130. data/html/img/panel_360_t.gif +0 -0
  131. data/html/img/panel_380_b.gif +0 -0
  132. data/html/img/panel_380_m.gif +0 -0
  133. data/html/img/panel_380_t.gif +0 -0
  134. data/html/img/panel_500_b.gif +0 -0
  135. data/html/img/panel_500_m.gif +0 -0
  136. data/html/img/panel_500_t.gif +0 -0
  137. data/html/img/panel_620_b.gif +0 -0
  138. data/html/img/panel_620_m.gif +0 -0
  139. data/html/img/panel_620_t.gif +0 -0
  140. data/html/img/panel_780_b.gif +0 -0
  141. data/html/img/panel_780_m.gif +0 -0
  142. data/html/img/panel_780_t.gif +0 -0
  143. data/html/img/problem.gif +0 -0
  144. data/html/img/progressbar.gif +0 -0
  145. data/html/img/result-title-1-1.gif +0 -0
  146. data/html/img/result-title-1-2.gif +0 -0
  147. data/html/img/result-title-2-1.gif +0 -0
  148. data/html/img/result-title-2-2.gif +0 -0
  149. data/html/img/result-title-3-1.gif +0 -0
  150. data/html/img/result-title-4-1.gif +0 -0
  151. data/html/img/rt-setting-title-1.gif +0 -0
  152. data/html/img/rt-setting-title-2.gif +0 -0
  153. data/html/img/s.gif +0 -0
  154. data/html/img/scroll.gif +0 -0
  155. data/html/img/separator.gif +0 -0
  156. data/html/img/sidebar_agent.png +0 -0
  157. data/html/img/sidebar_agent_edit.png +0 -0
  158. data/html/img/sidebar_agent_edit_agent.png +0 -0
  159. data/html/img/sidebar_agent_edit_agent_over.png +0 -0
  160. data/html/img/sidebar_agent_edit_agent_s.png +0 -0
  161. data/html/img/sidebar_agent_edit_over.png +0 -0
  162. data/html/img/sidebar_agent_edit_s.png +0 -0
  163. data/html/img/sidebar_agent_edit_shared_lib.png +0 -0
  164. data/html/img/sidebar_agent_edit_shared_lib_over.png +0 -0
  165. data/html/img/sidebar_agent_edit_shared_lib_s.png +0 -0
  166. data/html/img/sidebar_back.gif +0 -0
  167. data/html/img/sidebar_bt.png +0 -0
  168. data/html/img/sidebar_bt_create.png +0 -0
  169. data/html/img/sidebar_bt_create_over.png +0 -0
  170. data/html/img/sidebar_bt_create_s.png +0 -0
  171. data/html/img/sidebar_bt_result.png +0 -0
  172. data/html/img/sidebar_bt_result_over.png +0 -0
  173. data/html/img/sidebar_bt_result_s.png +0 -0
  174. data/html/img/sidebar_result_rmt.png +0 -0
  175. data/html/img/sidebar_result_rmt_over.png +0 -0
  176. data/html/img/sidebar_result_rmt_s.png +0 -0
  177. data/html/img/sidebar_rt.png +0 -0
  178. data/html/img/sidebar_rt_setting.png +0 -0
  179. data/html/img/sidebar_rt_setting_over.png +0 -0
  180. data/html/img/sidebar_rt_setting_s.png +0 -0
  181. data/html/img/sprite.png +0 -0
  182. data/html/img/submenu_agents.png +0 -0
  183. data/html/img/submenu_agents_over.png +0 -0
  184. data/html/img/submenu_agents_s.png +0 -0
  185. data/html/img/submenu_graph.png +0 -0
  186. data/html/img/submenu_graph_over.png +0 -0
  187. data/html/img/submenu_graph_s.png +0 -0
  188. data/html/img/submenu_info.png +0 -0
  189. data/html/img/submenu_info_over.png +0 -0
  190. data/html/img/submenu_info_s.png +0 -0
  191. data/html/img/submenu_log.png +0 -0
  192. data/html/img/submenu_log_over.png +0 -0
  193. data/html/img/submenu_log_s.png +0 -0
  194. data/html/img/submenu_operation.png +0 -0
  195. data/html/img/submenu_operation_over.png +0 -0
  196. data/html/img/submenu_operation_s.png +0 -0
  197. data/html/img/submenu_trade.png +0 -0
  198. data/html/img/submenu_trade_over.png +0 -0
  199. data/html/img/submenu_trade_s.png +0 -0
  200. data/html/img/td_over.gif +0 -0
  201. data/html/img/td_over_d.gif +0 -0
  202. data/html/img/td_selected.gif +0 -0
  203. data/html/img/thead.gif +0 -0
  204. data/html/img/transparent.gif +0 -0
  205. data/html/img/yui/treeview-sprite.gif +0 -0
  206. data/html/index.html +492 -0
  207. data/html/js/agent-editor/agent-editor-page.js +324 -0
  208. data/html/js/agent-editor/agent-editor.js +363 -0
  209. data/html/js/agent-editor/agent-list-tree.js +251 -0
  210. data/html/js/agent-selector.js +666 -0
  211. data/html/js/app.js +198 -0
  212. data/html/js/bt-create-page.js +205 -0
  213. data/html/js/container-min.js +1 -0
  214. data/html/js/container-utils.js +78 -0
  215. data/html/js/container.js +944 -0
  216. data/html/js/dialog.js +279 -0
  217. data/html/js/edit_area/autocompletion.js +491 -0
  218. data/html/js/edit_area/edit_area.css +546 -0
  219. data/html/js/edit_area/edit_area.js +539 -0
  220. data/html/js/edit_area/edit_area_compressor.php +408 -0
  221. data/html/js/edit_area/edit_area_full.gz +0 -0
  222. data/html/js/edit_area/edit_area_full.js +38 -0
  223. data/html/js/edit_area/edit_area_full_with_plugins.gz +0 -0
  224. data/html/js/edit_area/edit_area_full_with_plugins.js +39 -0
  225. data/html/js/edit_area/edit_area_functions.js +1205 -0
  226. data/html/js/edit_area/edit_area_loader.js +1082 -0
  227. data/html/js/edit_area/elements_functions.js +334 -0
  228. data/html/js/edit_area/highlight.js +391 -0
  229. data/html/js/edit_area/images/autocompletion.gif +0 -0
  230. data/html/js/edit_area/images/close.gif +0 -0
  231. data/html/js/edit_area/images/fullscreen.gif +0 -0
  232. data/html/js/edit_area/images/go_to_line.gif +0 -0
  233. data/html/js/edit_area/images/goto.png +0 -0
  234. data/html/js/edit_area/images/help.gif +0 -0
  235. data/html/js/edit_area/images/help.png +0 -0
  236. data/html/js/edit_area/images/highlight.gif +0 -0
  237. data/html/js/edit_area/images/load.gif +0 -0
  238. data/html/js/edit_area/images/move.gif +0 -0
  239. data/html/js/edit_area/images/newdocument.gif +0 -0
  240. data/html/js/edit_area/images/opacity.png +0 -0
  241. data/html/js/edit_area/images/processing.gif +0 -0
  242. data/html/js/edit_area/images/redo.gif +0 -0
  243. data/html/js/edit_area/images/redo.png +0 -0
  244. data/html/js/edit_area/images/reset_highlight.gif +0 -0
  245. data/html/js/edit_area/images/save.gif +0 -0
  246. data/html/js/edit_area/images/save.png +0 -0
  247. data/html/js/edit_area/images/search.gif +0 -0
  248. data/html/js/edit_area/images/search.png +0 -0
  249. data/html/js/edit_area/images/smooth_selection.gif +0 -0
  250. data/html/js/edit_area/images/spacer.gif +0 -0
  251. data/html/js/edit_area/images/statusbar_resize.gif +0 -0
  252. data/html/js/edit_area/images/undo.gif +0 -0
  253. data/html/js/edit_area/images/undo.png +0 -0
  254. data/html/js/edit_area/images/word_wrap.gif +0 -0
  255. data/html/js/edit_area/keyboard.js +145 -0
  256. data/html/js/edit_area/langs/bg.js +73 -0
  257. data/html/js/edit_area/langs/cs.js +67 -0
  258. data/html/js/edit_area/langs/de.js +67 -0
  259. data/html/js/edit_area/langs/dk.js +67 -0
  260. data/html/js/edit_area/langs/en.js +67 -0
  261. data/html/js/edit_area/langs/eo.js +67 -0
  262. data/html/js/edit_area/langs/es.js +64 -0
  263. data/html/js/edit_area/langs/fi.js +67 -0
  264. data/html/js/edit_area/langs/fr.js +67 -0
  265. data/html/js/edit_area/langs/hr.js +67 -0
  266. data/html/js/edit_area/langs/it.js +67 -0
  267. data/html/js/edit_area/langs/ja.js +67 -0
  268. data/html/js/edit_area/langs/mk.js +67 -0
  269. data/html/js/edit_area/langs/nl.js +67 -0
  270. data/html/js/edit_area/langs/pl.js +67 -0
  271. data/html/js/edit_area/langs/pt.js +67 -0
  272. data/html/js/edit_area/langs/ru.js +67 -0
  273. data/html/js/edit_area/langs/sk.js +67 -0
  274. data/html/js/edit_area/langs/zh.js +67 -0
  275. data/html/js/edit_area/license_apache.txt +7 -0
  276. data/html/js/edit_area/license_bsd.txt +10 -0
  277. data/html/js/edit_area/license_lgpl.txt +458 -0
  278. data/html/js/edit_area/manage_area.js +623 -0
  279. data/html/js/edit_area/plugins/charmap/charmap.js +90 -0
  280. data/html/js/edit_area/plugins/charmap/css/charmap.css +64 -0
  281. data/html/js/edit_area/plugins/charmap/images/charmap.gif +0 -0
  282. data/html/js/edit_area/plugins/charmap/jscripts/map.js +373 -0
  283. data/html/js/edit_area/plugins/charmap/langs/bg.js +12 -0
  284. data/html/js/edit_area/plugins/charmap/langs/cs.js +6 -0
  285. data/html/js/edit_area/plugins/charmap/langs/de.js +6 -0
  286. data/html/js/edit_area/plugins/charmap/langs/dk.js +6 -0
  287. data/html/js/edit_area/plugins/charmap/langs/en.js +6 -0
  288. data/html/js/edit_area/plugins/charmap/langs/eo.js +6 -0
  289. data/html/js/edit_area/plugins/charmap/langs/es.js +6 -0
  290. data/html/js/edit_area/plugins/charmap/langs/fr.js +6 -0
  291. data/html/js/edit_area/plugins/charmap/langs/hr.js +6 -0
  292. data/html/js/edit_area/plugins/charmap/langs/it.js +6 -0
  293. data/html/js/edit_area/plugins/charmap/langs/ja.js +6 -0
  294. data/html/js/edit_area/plugins/charmap/langs/mk.js +6 -0
  295. data/html/js/edit_area/plugins/charmap/langs/nl.js +6 -0
  296. data/html/js/edit_area/plugins/charmap/langs/pl.js +6 -0
  297. data/html/js/edit_area/plugins/charmap/langs/pt.js +6 -0
  298. data/html/js/edit_area/plugins/charmap/langs/ru.js +6 -0
  299. data/html/js/edit_area/plugins/charmap/langs/sk.js +6 -0
  300. data/html/js/edit_area/plugins/charmap/langs/zh.js +6 -0
  301. data/html/js/edit_area/plugins/charmap/popup.html +24 -0
  302. data/html/js/edit_area/plugins/test/css/test.css +3 -0
  303. data/html/js/edit_area/plugins/test/images/Thumbs.db +0 -0
  304. data/html/js/edit_area/plugins/test/images/test.gif +0 -0
  305. data/html/js/edit_area/plugins/test/langs/bg.js +10 -0
  306. data/html/js/edit_area/plugins/test/langs/cs.js +4 -0
  307. data/html/js/edit_area/plugins/test/langs/de.js +4 -0
  308. data/html/js/edit_area/plugins/test/langs/dk.js +4 -0
  309. data/html/js/edit_area/plugins/test/langs/en.js +4 -0
  310. data/html/js/edit_area/plugins/test/langs/eo.js +4 -0
  311. data/html/js/edit_area/plugins/test/langs/es.js +4 -0
  312. data/html/js/edit_area/plugins/test/langs/fr.js +4 -0
  313. data/html/js/edit_area/plugins/test/langs/hr.js +4 -0
  314. data/html/js/edit_area/plugins/test/langs/it.js +4 -0
  315. data/html/js/edit_area/plugins/test/langs/ja.js +4 -0
  316. data/html/js/edit_area/plugins/test/langs/mk.js +4 -0
  317. data/html/js/edit_area/plugins/test/langs/nl.js +4 -0
  318. data/html/js/edit_area/plugins/test/langs/pl.js +4 -0
  319. data/html/js/edit_area/plugins/test/langs/pt.js +4 -0
  320. data/html/js/edit_area/plugins/test/langs/ru.js +4 -0
  321. data/html/js/edit_area/plugins/test/langs/sk.js +4 -0
  322. data/html/js/edit_area/plugins/test/langs/zh.js +4 -0
  323. data/html/js/edit_area/plugins/test/test.js +110 -0
  324. data/html/js/edit_area/plugins/test/test2.js +1 -0
  325. data/html/js/edit_area/reg_syntax/basic.js +69 -0
  326. data/html/js/edit_area/reg_syntax/brainfuck.js +44 -0
  327. data/html/js/edit_area/reg_syntax/c.js +62 -0
  328. data/html/js/edit_area/reg_syntax/coldfusion.js +119 -0
  329. data/html/js/edit_area/reg_syntax/cpp.js +65 -0
  330. data/html/js/edit_area/reg_syntax/css.js +84 -0
  331. data/html/js/edit_area/reg_syntax/html.js +50 -0
  332. data/html/js/edit_area/reg_syntax/java.js +56 -0
  333. data/html/js/edit_area/reg_syntax/js.js +93 -0
  334. data/html/js/edit_area/reg_syntax/pas.js +82 -0
  335. data/html/js/edit_area/reg_syntax/perl.js +88 -0
  336. data/html/js/edit_area/reg_syntax/php.js +156 -0
  337. data/html/js/edit_area/reg_syntax/python.js +144 -0
  338. data/html/js/edit_area/reg_syntax/robotstxt.js +24 -0
  339. data/html/js/edit_area/reg_syntax/ruby.js +67 -0
  340. data/html/js/edit_area/reg_syntax/sql.js +55 -0
  341. data/html/js/edit_area/reg_syntax/tsql.js +87 -0
  342. data/html/js/edit_area/reg_syntax/vb.js +52 -0
  343. data/html/js/edit_area/reg_syntax/xml.js +56 -0
  344. data/html/js/edit_area/reg_syntax.js +166 -0
  345. data/html/js/edit_area/regexp.js +139 -0
  346. data/html/js/edit_area/resize_area.js +78 -0
  347. data/html/js/edit_area/search_replace.js +174 -0
  348. data/html/js/edit_area/template.html +101 -0
  349. data/html/js/json-broker-client.js +67 -0
  350. data/html/js/page-manager.js +93 -0
  351. data/html/js/prototype.js +4184 -0
  352. data/html/js/result-page.js +775 -0
  353. data/html/js/rt-setting-page.js +152 -0
  354. data/html/js/sidebar.js +263 -0
  355. data/html/js/templates.js +386 -0
  356. data/html/js/utils.js +890 -0
  357. data/html/js/uuid.js +103 -0
  358. data/html/js/yui/treeview.js +3671 -0
  359. data/html/swf/chart.swf +0 -0
  360. data/html/test/agent_editor_spec.js +815 -0
  361. data/html/test/index.html +40 -0
  362. data/html/test/jsspec/JSSpec.css +224 -0
  363. data/html/test/jsspec/JSSpec.js +1549 -0
  364. data/html/test/jsspec/diff_match_patch.js +1 -0
  365. data/html/test/utils_spec.js +111 -0
  366. data/lib/jiji/agent/agent.rb +149 -0
  367. data/lib/jiji/agent/agent_manager.rb +138 -0
  368. data/lib/jiji/agent/agent_registry.rb +165 -0
  369. data/lib/jiji/agent/permitter.rb +128 -0
  370. data/lib/jiji/agent/util.rb +16 -0
  371. data/lib/jiji/collector.rb +226 -0
  372. data/lib/jiji/command.rb +204 -0
  373. data/lib/jiji/configuration.rb +86 -0
  374. data/lib/jiji/dao/file_system_dao.rb +158 -0
  375. data/lib/jiji/dao/rate_dao.rb +149 -0
  376. data/lib/jiji/dao/timed_data_dao.rb +336 -0
  377. data/lib/jiji/dao/trade_result_dao.rb +128 -0
  378. data/lib/jiji/error.rb +49 -0
  379. data/lib/jiji/migration/migrator.rb +50 -0
  380. data/lib/jiji/migration/migrator1_0_3.rb +26 -0
  381. data/lib/jiji/migration/migrator1_1_0.rb +46 -0
  382. data/lib/jiji/migration/migrator1_2_0.rb +67 -0
  383. data/lib/jiji/models.rb +223 -0
  384. data/lib/jiji/observer.rb +105 -0
  385. data/lib/jiji/operator.rb +396 -0
  386. data/lib/jiji/output.rb +221 -0
  387. data/lib/jiji/output_manager.rb +84 -0
  388. data/lib/jiji/plugin/embedded/click_securities_demo_plugin.rb +141 -0
  389. data/lib/jiji/plugin/embedded/single_click_client.rb +116 -0
  390. data/lib/jiji/plugin/plugin_loader.rb +53 -0
  391. data/lib/jiji/plugin/securities_plugin.rb +134 -0
  392. data/lib/jiji/process.rb +234 -0
  393. data/lib/jiji/process_manager.rb +290 -0
  394. data/lib/jiji/registry.rb +349 -0
  395. data/lib/jiji/server.rb +127 -0
  396. data/lib/jiji/service/agent_service.rb +230 -0
  397. data/lib/jiji/service/hello_service.rb +10 -0
  398. data/lib/jiji/service/output_service.rb +82 -0
  399. data/lib/jiji/service/process_service.rb +76 -0
  400. data/lib/jiji/service/rate_service.rb +38 -0
  401. data/lib/jiji/service/system_service.rb +14 -0
  402. data/lib/jiji/service/trade_result_service.rb +31 -0
  403. data/lib/jiji/util/backtester.rb +116 -0
  404. data/lib/jiji/util/block_to_session.rb +70 -0
  405. data/lib/jiji/util/cache.rb +79 -0
  406. data/lib/jiji/util/csv_append_support.rb +15 -0
  407. data/lib/jiji/util/file_lock.rb +86 -0
  408. data/lib/jiji/util/fix_yaml_bug.rb +11 -0
  409. data/lib/jiji/util/include_proxy.rb +17 -0
  410. data/lib/jiji/util/iterator.rb +70 -0
  411. data/lib/jiji/util/json_broker.rb +55 -0
  412. data/lib/jiji/util/json_rpc_requestor.rb +30 -0
  413. data/lib/jiji/util/rate_data_importer.rb +219 -0
  414. data/lib/jiji/util/synchronize_interceptor.rb +41 -0
  415. data/lib/jiji/util/thread_use_generator.rb +52 -0
  416. data/lib/jiji/util/util.rb +112 -0
  417. data/lib/jiji_plugin.rb +6 -0
  418. data/swf/build.xml +23 -0
  419. data/swf/chart/FxChart-config.xml +9 -0
  420. data/swf/chart/FxChart.mxml +17 -0
  421. data/swf/chart/fx/chart/Chart.as +173 -0
  422. data/swf/chart/fx/chart/ctrl/AutoUpdate.as +96 -0
  423. data/swf/chart/fx/chart/ctrl/Controller.as +270 -0
  424. data/swf/chart/fx/chart/ctrl/Event.as +75 -0
  425. data/swf/chart/fx/chart/model/Model.as +228 -0
  426. data/swf/chart/fx/chart/model/TimedData.as +40 -0
  427. data/swf/chart/fx/chart/ui/AbstractChartUI.as +59 -0
  428. data/swf/chart/fx/chart/ui/AbstractDrawChartUI.as +63 -0
  429. data/swf/chart/fx/chart/ui/Constants.as +233 -0
  430. data/swf/chart/fx/chart/ui/InformationWindow.as +228 -0
  431. data/swf/chart/fx/chart/ui/LayerManager.as +95 -0
  432. data/swf/chart/fx/chart/ui/Loading.as +32 -0
  433. data/swf/chart/fx/chart/ui/Pointer.as +61 -0
  434. data/swf/chart/fx/chart/ui/RangeInfoWindow.as +84 -0
  435. data/swf/chart/fx/chart/ui/RenderingContext.as +54 -0
  436. data/swf/chart/fx/chart/ui/ScaleSelector.as +84 -0
  437. data/swf/chart/fx/chart/ui/Scroll.as +241 -0
  438. data/swf/chart/fx/chart/ui/ScrollBar.as +378 -0
  439. data/swf/chart/fx/chart/ui/Stage.as +97 -0
  440. data/swf/chart/fx/chart/ui/TradeDetailWindow.as +147 -0
  441. data/swf/chart/fx/chart/ui/TradeResult.as +330 -0
  442. data/swf/chart/fx/chart/ui/Window.as +96 -0
  443. data/swf/chart/fx/chart/ui/candle/Axis.as +112 -0
  444. data/swf/chart/fx/chart/ui/candle/Candle.as +79 -0
  445. data/swf/chart/fx/chart/ui/candle/CandleChart.as +81 -0
  446. data/swf/chart/fx/chart/ui/graph/Graph.as +200 -0
  447. data/swf/chart/fx/chart/ui/graph/GraphManager.as +192 -0
  448. data/swf/chart/fx/chart/ui/resource/buy.gif +0 -0
  449. data/swf/chart/fx/chart/ui/resource/cursor_hand.gif +0 -0
  450. data/swf/chart/fx/chart/ui/resource/diff_label.gif +0 -0
  451. data/swf/chart/fx/chart/ui/resource/down.gif +0 -0
  452. data/swf/chart/fx/chart/ui/resource/down_buy.gif +0 -0
  453. data/swf/chart/fx/chart/ui/resource/down_buy_1.gif +0 -0
  454. data/swf/chart/fx/chart/ui/resource/down_buy_2.gif +0 -0
  455. data/swf/chart/fx/chart/ui/resource/down_buy_3.gif +0 -0
  456. data/swf/chart/fx/chart/ui/resource/down_sell.gif +0 -0
  457. data/swf/chart/fx/chart/ui/resource/down_sell_1.gif +0 -0
  458. data/swf/chart/fx/chart/ui/resource/down_sell_2.gif +0 -0
  459. data/swf/chart/fx/chart/ui/resource/down_sell_3.gif +0 -0
  460. data/swf/chart/fx/chart/ui/resource/draw_buy.gif +0 -0
  461. data/swf/chart/fx/chart/ui/resource/draw_sell.gif +0 -0
  462. data/swf/chart/fx/chart/ui/resource/end_label.gif +0 -0
  463. data/swf/chart/fx/chart/ui/resource/fixed.gif +0 -0
  464. data/swf/chart/fx/chart/ui/resource/loading.gif +0 -0
  465. data/swf/chart/fx/chart/ui/resource/max_label.gif +0 -0
  466. data/swf/chart/fx/chart/ui/resource/min_label.gif +0 -0
  467. data/swf/chart/fx/chart/ui/resource/scroll_bar.gif +0 -0
  468. data/swf/chart/fx/chart/ui/resource/scroll_bar_a.gif +0 -0
  469. data/swf/chart/fx/chart/ui/resource/scroll_bar_handle.gif +0 -0
  470. data/swf/chart/fx/chart/ui/resource/scroll_bar_handle_a.gif +0 -0
  471. data/swf/chart/fx/chart/ui/resource/scroll_bar_handle_o.gif +0 -0
  472. data/swf/chart/fx/chart/ui/resource/scroll_bar_left.gif +0 -0
  473. data/swf/chart/fx/chart/ui/resource/scroll_bar_left_a.gif +0 -0
  474. data/swf/chart/fx/chart/ui/resource/scroll_bar_left_o.gif +0 -0
  475. data/swf/chart/fx/chart/ui/resource/scroll_bar_o.gif +0 -0
  476. data/swf/chart/fx/chart/ui/resource/scroll_bar_right.gif +0 -0
  477. data/swf/chart/fx/chart/ui/resource/scroll_bar_right_a.gif +0 -0
  478. data/swf/chart/fx/chart/ui/resource/scroll_bar_right_o.gif +0 -0
  479. data/swf/chart/fx/chart/ui/resource/scroll_handle.gif +0 -0
  480. data/swf/chart/fx/chart/ui/resource/scroll_info_handle.gif +0 -0
  481. data/swf/chart/fx/chart/ui/resource/scroll_left_button.gif +0 -0
  482. data/swf/chart/fx/chart/ui/resource/scroll_left_button_d.gif +0 -0
  483. data/swf/chart/fx/chart/ui/resource/scroll_left_button_down.gif +0 -0
  484. data/swf/chart/fx/chart/ui/resource/scroll_left_button_g.gif +0 -0
  485. data/swf/chart/fx/chart/ui/resource/scroll_left_button_o.gif +0 -0
  486. data/swf/chart/fx/chart/ui/resource/scroll_left_button_up.gif +0 -0
  487. data/swf/chart/fx/chart/ui/resource/scroll_outer.gif +0 -0
  488. data/swf/chart/fx/chart/ui/resource/scroll_outer_left.gif +0 -0
  489. data/swf/chart/fx/chart/ui/resource/scroll_outer_right.gif +0 -0
  490. data/swf/chart/fx/chart/ui/resource/scroll_right_button.gif +0 -0
  491. data/swf/chart/fx/chart/ui/resource/scroll_right_button_d.gif +0 -0
  492. data/swf/chart/fx/chart/ui/resource/scroll_right_button_down.gif +0 -0
  493. data/swf/chart/fx/chart/ui/resource/scroll_right_button_g.gif +0 -0
  494. data/swf/chart/fx/chart/ui/resource/scroll_right_button_o.gif +0 -0
  495. data/swf/chart/fx/chart/ui/resource/scroll_right_button_up.gif +0 -0
  496. data/swf/chart/fx/chart/ui/resource/scroll_slider_left.gif +0 -0
  497. data/swf/chart/fx/chart/ui/resource/scroll_slider_right.gif +0 -0
  498. data/swf/chart/fx/chart/ui/resource/sell.gif +0 -0
  499. data/swf/chart/fx/chart/ui/resource/start_label.gif +0 -0
  500. data/swf/chart/fx/chart/ui/resource/stripe.gif +0 -0
  501. data/swf/chart/fx/chart/ui/resource/stripe_b.gif +0 -0
  502. data/swf/chart/fx/chart/ui/resource/stripe_r.gif +0 -0
  503. data/swf/chart/fx/chart/ui/resource/unfixed.gif +0 -0
  504. data/swf/chart/fx/chart/ui/resource/up.gif +0 -0
  505. data/swf/chart/fx/chart/ui/resource/up_buy.gif +0 -0
  506. data/swf/chart/fx/chart/ui/resource/up_buy_1.gif +0 -0
  507. data/swf/chart/fx/chart/ui/resource/up_buy_2.gif +0 -0
  508. data/swf/chart/fx/chart/ui/resource/up_buy_3.gif +0 -0
  509. data/swf/chart/fx/chart/ui/resource/up_sell.gif +0 -0
  510. data/swf/chart/fx/chart/ui/resource/up_sell_1.gif +0 -0
  511. data/swf/chart/fx/chart/ui/resource/up_sell_2.gif +0 -0
  512. data/swf/chart/fx/chart/ui/resource/up_sell_3.gif +0 -0
  513. data/swf/chart/fx/net/StubFactory.as +113 -0
  514. data/swf/chart/fx/util/ListenerSupport.as +55 -0
  515. data/swf/chart/fx/util/PositionManager.as +95 -0
  516. data/swf/chart/fx/util/ScaleFormatter.as +156 -0
  517. data/swf/chart/fx/util/Util.as +61 -0
  518. data/swf/chart/log.as +40 -0
  519. data/swf/lib/corelib.swc +0 -0
  520. data/test/BackCollectorTest/basic/2008-08-04/AUDJPY.csv +5 -0
  521. data/test/BackCollectorTest/basic/2008-08-04/USDJPY.csv +5 -0
  522. data/test/BackCollectorTest/basic/2008-08-04/ZARJPY.csv +5 -0
  523. data/test/BackCollectorTest/basic/2008-08-05/AUDJPY.csv +5 -0
  524. data/test/BackCollectorTest/basic/2008-08-05/USDJPY.csv +5 -0
  525. data/test/BackCollectorTest/basic/2008-08-05/ZARJPY.csv +5 -0
  526. data/test/BackCollectorTest/basic/2008-08-06/AUDJPY.csv +5 -0
  527. data/test/BackCollectorTest/basic/2008-08-06/USDJPY.csv +5 -0
  528. data/test/BackCollectorTest/basic/2008-08-06/ZARJPY.csv +5 -0
  529. data/test/BackCollectorTest/basic/2008-08-07/AUDJPY.csv +5 -0
  530. data/test/BackCollectorTest/basic/2008-08-07/USDJPY.csv +5 -0
  531. data/test/BackCollectorTest/basic/2008-08-07/ZARJPY.csv +5 -0
  532. data/test/BackCollectorTest/basic/AUDJPY/raw/2008-08-04.csv +5 -0
  533. data/test/BackCollectorTest/basic/AUDJPY/raw/2008-08-05.csv +5 -0
  534. data/test/BackCollectorTest/basic/AUDJPY/raw/2008-08-06.csv +5 -0
  535. data/test/BackCollectorTest/basic/AUDJPY/raw/2008-08-07.csv +5 -0
  536. data/test/BackCollectorTest/basic/USDJPY/raw/2008-08-04.csv +5 -0
  537. data/test/BackCollectorTest/basic/USDJPY/raw/2008-08-05.csv +5 -0
  538. data/test/BackCollectorTest/basic/USDJPY/raw/2008-08-06.csv +5 -0
  539. data/test/BackCollectorTest/basic/USDJPY/raw/2008-08-07.csv +5 -0
  540. data/test/BackCollectorTest/basic/ZARJPY/raw/2008-08-04.csv +5 -0
  541. data/test/BackCollectorTest/basic/ZARJPY/raw/2008-08-05.csv +5 -0
  542. data/test/BackCollectorTest/basic/ZARJPY/raw/2008-08-06.csv +5 -0
  543. data/test/BackCollectorTest/basic/ZARJPY/raw/2008-08-07.csv +5 -0
  544. data/test/BackCollectorTest/lack/2008-08-04/AUDJPY.csv +5 -0
  545. data/test/BackCollectorTest/lack/2008-08-04/USDJPY.csv +5 -0
  546. data/test/BackCollectorTest/lack/2008-08-04/ZARJPY.csv +5 -0
  547. data/test/BackCollectorTest/lack/2008-08-06/AUDJPY.csv +5 -0
  548. data/test/BackCollectorTest/lack/2008-08-06/USDJPY.csv +5 -0
  549. data/test/BackCollectorTest/lack/2008-08-06/ZARJPY.csv +5 -0
  550. data/test/BackCollectorTest/lack/2008-08-07/AUDJPY.csv +5 -0
  551. data/test/BackCollectorTest/lack/2008-08-07/USDJPY.csv +5 -0
  552. data/test/BackCollectorTest/lack/2008-08-07/ZARJPY.csv +5 -0
  553. data/test/BackCollectorTest/lack/AUDJPY/raw/2008-08-04.csv +5 -0
  554. data/test/BackCollectorTest/lack/AUDJPY/raw/2008-08-06.csv +5 -0
  555. data/test/BackCollectorTest/lack/AUDJPY/raw/2008-08-07.csv +5 -0
  556. data/test/BackCollectorTest/lack/USDJPY/raw/2008-08-04.csv +5 -0
  557. data/test/BackCollectorTest/lack/USDJPY/raw/2008-08-06.csv +5 -0
  558. data/test/BackCollectorTest/lack/USDJPY/raw/2008-08-07.csv +5 -0
  559. data/test/BackCollectorTest/lack/ZARJPY/raw/2008-08-04.csv +5 -0
  560. data/test/BackCollectorTest/lack/ZARJPY/raw/2008-08-06.csv +5 -0
  561. data/test/BackCollectorTest/lack/ZARJPY/raw/2008-08-07.csv +5 -0
  562. data/test/OutputregistryTest/conf/configuration.yaml +3 -0
  563. data/test/ProcessManagerTest/agents/moving_average.rb +95 -0
  564. data/test/ProcessManagerTest/conf/configuration.yaml +6 -0
  565. data/test/ProcessManagerTest/rate_datas/EURJPY/raw/2008-08-21.csv +5853 -0
  566. data/test/ProcessManagerTest/rate_datas/EURJPY/raw/2008-08-22.csv +5821 -0
  567. data/test/ProcessManagerTest/rate_datas/EURJPY/raw/2008-08-23.csv +5921 -0
  568. data/test/ProcessManagerTest/rate_datas/EURJPY/raw/2008-08-24.csv +5956 -0
  569. data/test/ProcessManagerTest/rate_datas/EURJPY/raw/2008-08-25.csv +5796 -0
  570. data/test/ProcessManagerTest/rate_datas/USDJPY/raw/2008-08-21.csv +5853 -0
  571. data/test/ProcessManagerTest/rate_datas/USDJPY/raw/2008-08-22.csv +5821 -0
  572. data/test/ProcessManagerTest/rate_datas/USDJPY/raw/2008-08-23.csv +5921 -0
  573. data/test/ProcessManagerTest/rate_datas/USDJPY/raw/2008-08-24.csv +5956 -0
  574. data/test/ProcessManagerTest/rate_datas/USDJPY/raw/2008-08-25.csv +5796 -0
  575. data/test/ProcessTest/agents/foo.rb +10 -0
  576. data/test/ProcessTest/conf/configuration.yaml +3 -0
  577. data/test/agent/agent_tests.rb +10 -0
  578. data/test/agent/test_AgentManager.rb +321 -0
  579. data/test/agent/test_AgentRegistry.rb +662 -0
  580. data/test/agent/test_PeriodicallyAgent.rb +180 -0
  581. data/test/agent/test_Permitter.rb +217 -0
  582. data/test/all_tests.rb +24 -0
  583. data/test/dao/dao_tests.rb +9 -0
  584. data/test/dao/test_FileSystemDao.rb +431 -0
  585. data/test/dao/test_RateDao.rb +695 -0
  586. data/test/dao/test_TradeResultDao.rb +487 -0
  587. data/test/jiji_plugin.rb +7 -0
  588. data/test/migration/migration_tests.rb +10 -0
  589. data/test/migration/migrator1_0_3test_data/rmt/out/M2NlOTA2ODEtZDdlNi00NWU1LWIwNDQtMjBmODY2ZGNkNzBj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  590. data/test/migration/migrator1_0_3test_data/rmt/out/NjM5YWFhZmQtNDFjNy00NjUxLWIwYmItNTc3ZjAyZTg5ODA5/56e75YuV5bmz5Z2H57ea/meta.yaml +12 -0
  591. data/test/migration/migrator1_0_3test_data/rmt/out/NjM5YWFhZmQtNDFjNy00NjUxLWIwYmItNTc3ZjAyZTg5ODA5/56e75Yuasdwqdd/meta.yaml +12 -0
  592. data/test/migration/migrator1_1_0test_data/configuration.yaml +11 -0
  593. data/test/migration/migrator1_2_0test_data/basic/out/M2NlOTA2ODEtZDdlNi00NWU1LWIwNDQtMjBmODY2ZGNkNzBj/56e75YuV5bmz5Z2H57ea/1d/2009-04.csv +8 -0
  594. data/test/migration/migrator1_2_0test_data/basic/out/M2NlOTA2ODEtZDdlNi00NWU1LWIwNDQtMjBmODY2ZGNkNzBj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  595. data/test/migration/migrator1_2_0test_data/basic/out/MDVhYzcxMjYtMGFlMS00Mzk0LWEyNmUtYjVjZjgwNDA0ZmE2/56e75YuV5bmz5Z2H57ea/1d/2009-07.csv +1 -0
  596. data/test/migration/migrator1_2_0test_data/basic/out/MDVhYzcxMjYtMGFlMS00Mzk0LWEyNmUtYjVjZjgwNDA0ZmE2/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  597. data/test/migration/migrator1_2_0test_data/basic/out/MzA1YTk0NDgtNzhjNi00NDk3LTk2NTktYzE1ZjBhNzdiYjNj/56e75YuV5bmz5Z2H57ea/1d/2009-07.csv +1 -0
  598. data/test/migration/migrator1_2_0test_data/basic/out/MzA1YTk0NDgtNzhjNi00NDk3LTk2NTktYzE1ZjBhNzdiYjNj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  599. data/test/migration/migrator1_2_0test_data/basic/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/1d/2009-04.csv +10 -0
  600. data/test/migration/migrator1_2_0test_data/basic/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/1d/2009-05.csv +20 -0
  601. data/test/migration/migrator1_2_0test_data/basic/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/1d/2009-06.csv +20 -0
  602. data/test/migration/migrator1_2_0test_data/basic/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/1d/2009-07.csv +18 -0
  603. data/test/migration/migrator1_2_0test_data/basic/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/meta.yaml +9 -0
  604. data/test/migration/migrator1_2_0test_data/basic/props.yaml +85 -0
  605. data/test/migration/migrator1_2_0test_data/illegal_props/out/M2NlOTA2ODEtZDdlNi00NWU1LWIwNDQtMjBmODY2ZGNkNzBj/56e75YuV5bmz5Z2H57ea/1d/2009-04.csv +8 -0
  606. data/test/migration/migrator1_2_0test_data/illegal_props/out/M2NlOTA2ODEtZDdlNi00NWU1LWIwNDQtMjBmODY2ZGNkNzBj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  607. data/test/migration/migrator1_2_0test_data/illegal_props/out/MDVhYzcxMjYtMGFlMS00Mzk0LWEyNmUtYjVjZjgwNDA0ZmE2/56e75YuV5bmz5Z2H57ea/1d/2009-07.csv +1 -0
  608. data/test/migration/migrator1_2_0test_data/illegal_props/out/MDVhYzcxMjYtMGFlMS00Mzk0LWEyNmUtYjVjZjgwNDA0ZmE2/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  609. data/test/migration/migrator1_2_0test_data/illegal_props/out/MzA1YTk0NDgtNzhjNi00NDk3LTk2NTktYzE1ZjBhNzdiYjNj/56e75YuV5bmz5Z2H57ea/1d/2009-07.csv +1 -0
  610. data/test/migration/migrator1_2_0test_data/illegal_props/out/MzA1YTk0NDgtNzhjNi00NDk3LTk2NTktYzE1ZjBhNzdiYjNj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  611. data/test/migration/migrator1_2_0test_data/illegal_props/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/1d/2009-04.csv +10 -0
  612. data/test/migration/migrator1_2_0test_data/illegal_props/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/1d/2009-05.csv +20 -0
  613. data/test/migration/migrator1_2_0test_data/illegal_props/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/1d/2009-06.csv +20 -0
  614. data/test/migration/migrator1_2_0test_data/illegal_props/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/1d/2009-07.csv +18 -0
  615. data/test/migration/migrator1_2_0test_data/illegal_props/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/meta.yaml +9 -0
  616. data/test/migration/migrator1_2_0test_data/illegal_props/props.yaml +1 -0
  617. data/test/migration/migrator1_2_0test_data/no_outs/props.yaml +85 -0
  618. data/test/migration/migrator1_2_0test_data/no_props/out/M2NlOTA2ODEtZDdlNi00NWU1LWIwNDQtMjBmODY2ZGNkNzBj/56e75YuV5bmz5Z2H57ea/1d/2009-04.csv +8 -0
  619. data/test/migration/migrator1_2_0test_data/no_props/out/M2NlOTA2ODEtZDdlNi00NWU1LWIwNDQtMjBmODY2ZGNkNzBj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  620. data/test/migration/migrator1_2_0test_data/no_props/out/MDVhYzcxMjYtMGFlMS00Mzk0LWEyNmUtYjVjZjgwNDA0ZmE2/56e75YuV5bmz5Z2H57ea/1d/2009-07.csv +1 -0
  621. data/test/migration/migrator1_2_0test_data/no_props/out/MDVhYzcxMjYtMGFlMS00Mzk0LWEyNmUtYjVjZjgwNDA0ZmE2/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  622. data/test/migration/migrator1_2_0test_data/no_props/out/MzA1YTk0NDgtNzhjNi00NDk3LTk2NTktYzE1ZjBhNzdiYjNj/56e75YuV5bmz5Z2H57ea/1d/2009-07.csv +1 -0
  623. data/test/migration/migrator1_2_0test_data/no_props/out/MzA1YTk0NDgtNzhjNi00NDk3LTk2NTktYzE1ZjBhNzdiYjNj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  624. data/test/migration/migrator1_2_0test_data/no_props/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/1d/2009-04.csv +10 -0
  625. data/test/migration/migrator1_2_0test_data/no_props/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/1d/2009-05.csv +20 -0
  626. data/test/migration/migrator1_2_0test_data/no_props/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/1d/2009-06.csv +20 -0
  627. data/test/migration/migrator1_2_0test_data/no_props/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/1d/2009-07.csv +18 -0
  628. data/test/migration/migrator1_2_0test_data/no_props/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/meta.yaml +9 -0
  629. data/test/migration/test_Migrator.rb +117 -0
  630. data/test/migration/test_Migrator1_0_3.rb +118 -0
  631. data/test/migration/test_Migrator1_1_0.rb +56 -0
  632. data/test/migration/test_Migrator1_2_0.rb +94 -0
  633. data/test/plugin/embedded/test_SingleClickClient.rb +144 -0
  634. data/test/plugin/error_test/jiji_plugin.rb +2 -0
  635. data/test/plugin/plugin_tests.rb +8 -0
  636. data/test/plugin/test/foo_plugin.rb +1 -0
  637. data/test/plugin/test/jiji_plugin.rb +2 -0
  638. data/test/plugin/test_Loader.rb +33 -0
  639. data/test/plugin/test_gem/a/jiji_plugin_test_gem_a-1.0.0.gem +0 -0
  640. data/test/plugin/test_gem/a/jiji_plugin_test_gem_a.gemspec +10 -0
  641. data/test/plugin/test_gem/a/lib/jiji_plugin.rb +2 -0
  642. data/test/plugin/test_gem/a/lib/jiji_plugin_test.rb +6 -0
  643. data/test/plugin/test_gem/b/jiji_plugin_test_gem_b-1.0.0.gem +0 -0
  644. data/test/plugin/test_gem/b/jiji_plugin_test_gem_b.gemspec +9 -0
  645. data/test/plugin/test_gem/b/lib/jiji_plugin.rb +2 -0
  646. data/test/service/all_service_tests.rb +10 -0
  647. data/test/service/test_AgentService.rb +185 -0
  648. data/test/service/test_OutputService.rb +33 -0
  649. data/test/service/test_RateService.rb +56 -0
  650. data/test/shared/rate.csv +144 -0
  651. data/test/shared/shared_tests.rb +9 -0
  652. data/test/shared/test_Cross.rb +144 -0
  653. data/test/shared/test_PositionManager.rb +285 -0
  654. data/test/shared/test_Signal.rb +65 -0
  655. data/test/test_BackTestCollector.rb +273 -0
  656. data/test/test_Collector.rb +230 -0
  657. data/test/test_Configuration.rb +61 -0
  658. data/test/test_Configuration_a.yaml +6 -0
  659. data/test/test_Operator.rb +501 -0
  660. data/test/test_Output.rb +175 -0
  661. data/test/test_OutputManager.rb +162 -0
  662. data/test/test_Output_registry.rb +42 -0
  663. data/test/test_Process.rb +557 -0
  664. data/test/test_ProcessManager.rb +723 -0
  665. data/test/test_utils.rb +112 -0
  666. data/test/util/test_BlockToSession.rb +121 -0
  667. data/test/util/test_CSV.rb +84 -0
  668. data/test/util/test_SynchronizeInterceptor.rb +76 -0
  669. data/test/util/util_tests.rb +9 -0
  670. metadata +941 -0
@@ -0,0 +1,662 @@
1
+ #!/usr/bin/ruby
2
+
3
+ $: << "../lib"
4
+
5
+ require 'rubygems'
6
+ require 'runit/testcase'
7
+ require 'runit/cui/testrunner'
8
+ require 'jiji/agent/agent'
9
+ require 'jiji/agent/agent_manager'
10
+ require 'jiji/agent/agent_registry'
11
+ require 'jiji/agent/permitter'
12
+ require 'jiji/agent/util'
13
+ require 'jiji/configuration'
14
+ require 'jiji/dao/file_system_dao'
15
+ require 'fileutils'
16
+
17
+ # AgentRegistory のテスト
18
+ class AgentRegistryTest < RUNIT::TestCase
19
+ include JIJI::AgentUtil
20
+ def setup
21
+ @dir = File.dirname(__FILE__) + "/agents"
22
+ FileUtils.mkdir_p @dir
23
+
24
+ @dao = JIJI::Dao::FileSystemDao.new( @dir )
25
+ @dao.mkcol "agents"
26
+ @dao.mkcol "shared"
27
+
28
+ @registry = JIJI::AgentRegistry.new( "agents", "shared" )
29
+ @registry.conf = JIJI::Configuration.new
30
+ @registry.file_dao = @dao
31
+ @registry.server_logger = Logger.new STDOUT
32
+ end
33
+
34
+ def teardown
35
+ FileUtils.rm_rf @dir
36
+ sleep 1
37
+ end
38
+
39
+ # 基本動作のテスト
40
+ def test_basic
41
+
42
+ # 最初は空
43
+ assert_equals @registry.collect, []
44
+
45
+ # 追加
46
+ foo_body = "class Foo; include JIJI::Agent; end"
47
+ var_body = <<-BODY
48
+ class Var
49
+ include JIJI::Agent
50
+ def test
51
+ [JIJI::Agent::Shared::VALUE, JIJI::Agent::Shared::SharedLib.new, JIJI::Agent::Shared.m] # 共有ライブラリのAPIを使用。
52
+ end
53
+ end
54
+ BODY
55
+
56
+ assert_equals @dao.put( "agents/foo.rb", foo_body ), :success
57
+ assert_equals @dao.put( "agents/var.rb", var_body ), :success
58
+ @registry.load( "agents/foo.rb" )
59
+ @registry.load( "agents/var.rb" )
60
+
61
+ assert_equals @registry.collect.sort!, ["Foo@foo.rb", "Var@var.rb"]
62
+ assert_agent_files @dao.list("agents"), ["foo.rb","var.rb"]
63
+ assert_agent_files @dao.list("shared"), []
64
+
65
+
66
+ # 取得
67
+ cl = @registry.get "Foo@foo.rb"
68
+ assert_not_nil cl
69
+ cl.new # インスタンスを生成できるのを確認
70
+
71
+ cl = @registry.get "Var@var.rb"
72
+ assert_not_nil cl
73
+ obj = safe(4) {cl.new}
74
+ begin
75
+ obj.test
76
+ fail
77
+ rescue
78
+ end
79
+
80
+ # 共有ライブラリを追加。
81
+ shared_lib_body = <<-BODY
82
+ VALUE="val"
83
+ class SharedLib
84
+ def foo
85
+ "fooo" # 共有ライブラリのAPIを使用。
86
+ end
87
+ end
88
+ def self.m
89
+ "method called."
90
+ end
91
+ BODY
92
+ assert_equals @dao.put( "shared/shared_lib.rb", shared_lib_body ), :success
93
+ @registry.load( "shared/shared_lib.rb" )
94
+
95
+ # 一覧
96
+ assert_equals @registry.collect.sort!, ["Foo@foo.rb", "Var@var.rb"]
97
+ assert_agent_files @dao.list( "agents" ), ["foo.rb","var.rb"]
98
+ assert_agent_files @dao.list( "shared" ), ["shared_lib.rb"]
99
+
100
+ # 共有ライブラリを呼び出すAPIが利用可能になる。
101
+ assert_equals( safe(4) { obj.test[0] }, "val")
102
+ assert_equals( safe(4) { obj.test[1].foo}, "fooo" )
103
+ assert_equals( safe(4) { obj.test[2] }, "method called.")
104
+
105
+ begin
106
+ @registry.get("Not_Found@notfound.rb")
107
+ fail
108
+ rescue JIJI::UserError
109
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
110
+ end
111
+ begin
112
+ @registry.get("Not_Found@foo.rb")
113
+ fail
114
+ rescue JIJI::UserError
115
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
116
+ end
117
+ begin
118
+ @registry.get("Not::Not_Found@foo.rb")
119
+ fail
120
+ rescue JIJI::UserError
121
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
122
+ end
123
+
124
+ #ファイル取得
125
+ assert_equals @dao.get( "agents/foo.rb" ), foo_body
126
+ assert_equals @dao.get( "agents/var.rb" ), var_body
127
+ assert_equals @dao.get( "shared/shared_lib.rb" ), shared_lib_body
128
+ begin
129
+ @dao.get( "agents/Not_Found" )
130
+ fail
131
+ rescue JIJI::UserError
132
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
133
+ end
134
+ begin
135
+ @dao.get( "shared/Not_Found" )
136
+ fail
137
+ rescue JIJI::UserError
138
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
139
+ end
140
+ begin
141
+ @dao.get( "shared/foo.rb" )
142
+ fail
143
+ rescue JIJI::UserError
144
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
145
+ end
146
+
147
+ # 上書き更新
148
+ var_body = <<-BODY
149
+ class Var2
150
+ include JIJI::Agent
151
+ def test
152
+ [JIJI::Agent::Shared::VALUE, JIJI::Agent::Shared::SharedLib.new, "xx"] # 共有ライブラリのAPIを使用。
153
+ end
154
+ end
155
+ BODY
156
+ assert_equals @dao.put( "agents/var.rb", var_body ), :success
157
+ @registry.load( "agents/var.rb" )
158
+
159
+ assert_equals @registry.collect.sort!, ["Foo@foo.rb", "Var2@var.rb"]
160
+ assert_agent_files @dao.list("agents"), ["foo.rb","var.rb"]
161
+
162
+ assert_equals @dao.get( "agents/foo.rb" ), foo_body
163
+ assert_equals @dao.get( "agents/var.rb" ), var_body
164
+ assert_equals @dao.get( "shared/shared_lib.rb" ), shared_lib_body
165
+
166
+ cl = @registry.get "Var2@var.rb"
167
+ assert_not_nil cl
168
+ obj = @registry.create("Var2@var.rb",{})
169
+
170
+ assert_equals( safe(4) { obj.test[0] }, "val")
171
+ assert_equals( safe(4) { obj.test[1].foo}, "fooo" )
172
+ assert_equals( safe(4) { obj.test[2] }, "xx")
173
+
174
+ # 古いクラスは利用不可
175
+ begin
176
+ @registry.get("Var@var.rb")
177
+ fail
178
+ rescue JIJI::UserError
179
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
180
+ end
181
+
182
+ # レジストリを再作成
183
+ @registry = JIJI::AgentRegistry.new( "agents", "shared" )
184
+ @registry.conf = JIJI::Configuration.new
185
+ @registry.file_dao = @dao
186
+ @registry.server_logger = Logger.new STDOUT
187
+
188
+ assert_equals @registry.collect, []
189
+ assert_agent_files @dao.list( "agents" ), ["foo.rb","var.rb"]
190
+ assert_agent_files @dao.list( "shared" ), ["shared_lib.rb"]
191
+
192
+ # 再読み込み
193
+ @registry.load_all
194
+ assert_equals @registry.collect.sort!, ["Foo@foo.rb", "Var2@var.rb"]
195
+ assert_agent_files @dao.list( "agents" ), ["foo.rb","var.rb"]
196
+ assert_agent_files @dao.list( "shared" ), ["shared_lib.rb"]
197
+
198
+ # 共有ライブラリを削除
199
+ #ライブラリ内のクラスは利用不可
200
+ @dao.delete( "shared/shared_lib.rb" )
201
+ @registry.unload( "shared/shared_lib.rb" )
202
+ assert_equals @registry.collect.sort!, ["Foo@foo.rb", "Var2@var.rb"]
203
+ assert_agent_files @dao.list( "agents" ), ["foo.rb","var.rb"]
204
+ assert_agent_files @dao.list( "shared" ), []
205
+
206
+ cl = @registry.get "Var2@var.rb"
207
+ assert_not_nil cl
208
+ obj = @registry.create("Var2@var.rb",{})
209
+ begin
210
+ safe(4) { obj.test[0] }
211
+ rescue NameError
212
+ end
213
+ #assert_equals( safe(4) { obj.test[0] }, "val")
214
+ #assert_equals( safe(4) { obj.test[1].foo}, "fooo" )
215
+ #assert_equals( safe(4) { obj.test[2] }, "xx")
216
+
217
+ begin
218
+ @dao.delete( "shared/NotFound" )
219
+ rescue JIJI::UserError
220
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
221
+ end
222
+
223
+ # 削除
224
+ @dao.delete( "agents/var.rb" )
225
+ @registry.unload( "agents/var.rb" )
226
+ assert_equals @registry.collect.sort!, ["Foo@foo.rb"]
227
+ assert_agent_files @dao.list( "agents" ), ["foo.rb"]
228
+ assert_agent_files @dao.list( "shared" ), []
229
+
230
+ begin
231
+ @dao.delete( "NotFound" )
232
+ rescue JIJI::UserError
233
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
234
+ end
235
+
236
+ assert_equals @registry.collect.sort!, ["Foo@foo.rb"]
237
+ assert_agent_files @dao.list( "agents" ), ["foo.rb"]
238
+
239
+ # 削除したクラスは利用不可
240
+ cl = @registry.get "Foo@foo.rb"
241
+ assert_not_nil cl
242
+ begin
243
+ @registry.get("Var2@var.rb")
244
+ fail
245
+ rescue JIJI::UserError
246
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
247
+ end
248
+
249
+ # レジストリを再作成
250
+ @registry = JIJI::AgentRegistry.new( "agents", "shared" )
251
+ @registry.conf = JIJI::Configuration.new
252
+ @registry.file_dao = @dao
253
+ @registry.server_logger = Logger.new STDOUT
254
+
255
+ @registry.load_all
256
+ assert_equals @registry.collect.sort!, ["Foo@foo.rb"]
257
+ assert_agent_files @dao.list( "agents" ), ["foo.rb"]
258
+ assert_agent_files @dao.list( "shared" ), []
259
+
260
+ cl = @registry.get "Foo@foo.rb"
261
+ assert_not_nil cl
262
+
263
+ # 再登録
264
+ str = <<-CLASS_DEF
265
+ class Var; include JIJI::Agent; end
266
+ module Xx
267
+ class Var2_1; include JIJI::Agent; end
268
+ class Var2_2; include JIJI::Agent; end
269
+ module Yy
270
+ class Var2_3; include JIJI::Agent; end
271
+ end
272
+ class X; end
273
+ Y = "foo"
274
+ end
275
+ class Var3; include JIJI::Agent; end
276
+ class A; end
277
+ class S
278
+ include JIJI::Agent
279
+ def test
280
+ JIJI::Agent::Shared::VALUE
281
+ end
282
+ end
283
+ CLASS_DEF
284
+ @dao.put( "agents/var.rb", str )
285
+ @registry.load( "agents/var.rb" )
286
+ assert_equals @registry.collect.sort!, ["Foo@foo.rb", "S@var.rb", "Var3@var.rb", "Var@var.rb", "Xx::Var2_1@var.rb", "Xx::Var2_2@var.rb","Xx::Yy::Var2_3@var.rb"]
287
+ assert_agent_files @dao.list( "agents" ), ["foo.rb","var.rb"]
288
+
289
+ # 取得
290
+ begin
291
+ assert_nil @registry.get("A@var.rb")
292
+ fail
293
+ rescue JIJI::UserError
294
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
295
+ end
296
+ begin
297
+ @registry.get("Xx@var.rb")
298
+ fail
299
+ rescue JIJI::UserError
300
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
301
+ end
302
+ begin
303
+ @registry.get("Xx::Y@var.rb")
304
+ fail
305
+ rescue JIJI::UserError
306
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
307
+ end
308
+ begin
309
+ @registry.get("Xx::X@var.rb")
310
+ fail
311
+ rescue JIJI::UserError
312
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
313
+ end
314
+ begin
315
+ @registry.get("Xx::Yy@var.rb")
316
+ fail
317
+ rescue JIJI::UserError
318
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
319
+ end
320
+
321
+ end
322
+
323
+ # エージェントファイル一覧を確認する。
324
+ def assert_agent_files( files, expects )
325
+ assert_equals files.length, expects.length
326
+ files.each_index { |i|
327
+ # 名前が取得できることを確認。最終更新日時は設定されていることのみ確認
328
+ assert_equals expects[i], files[i][:name]
329
+ assert_not_nil files[i][:update]
330
+ }
331
+ end
332
+
333
+ # プロパティ一覧のテスト
334
+ def test_properties
335
+ str =<<-AGENT_STR
336
+ class Foo
337
+ include JIJI::Agent
338
+ def initialize
339
+ @a = 1
340
+ @b = "foo"
341
+ @c = 0.1
342
+ end
343
+ def property_infos
344
+ [
345
+ Property.new( "a", "aaa", 1 ),
346
+ Property.new( "b", "bbb", "foo" ),
347
+ Property.new( "c", "ccc", 0.1 )
348
+ ]
349
+ end
350
+ def description
351
+ "テスト"
352
+ end
353
+ attr :a, true
354
+ attr :b, true
355
+ attr :c, true
356
+ end
357
+ AGENT_STR
358
+
359
+ @dao.put( "agents/foo.rb", str )
360
+ @registry.load( "agents/foo.rb" )
361
+
362
+ ps = @registry.get_property_infos "Foo@foo.rb"
363
+ assert_equals ps, [
364
+ JIJI::Agent::Property.new( "a", "aaa", 1 ),
365
+ JIJI::Agent::Property.new( "b", "bbb", "foo" ),
366
+ JIJI::Agent::Property.new( "c", "ccc", 0.1 )
367
+ ]
368
+
369
+ agent = @registry.create( "Foo@foo.rb" )
370
+ assert_equals [1,"foo", 0.1], safe(4){
371
+ # エージェントはデフォルトではsafeレベル4で実行されるため、汚染されている。
372
+ # safeレベル0では呼び出せない。
373
+ [agent.a, agent.b, agent.c]
374
+ }
375
+ agent = @registry.create( "Foo@foo.rb", {
376
+ "a" => 100, "b" => "test", "c" => 0.34
377
+ })
378
+ assert_equals [100,"test", 0.34],safe(4){
379
+ [agent.a, agent.b, agent.c]
380
+ }
381
+
382
+ # 説明の取得
383
+ assert_equals "テスト", @registry.get_description("Foo@foo.rb")
384
+ end
385
+
386
+ # クラス更新のテスト
387
+ def test_update
388
+ str = <<-CLASS_DEF
389
+ module Test
390
+ class Foo
391
+ include JIJI::Agent
392
+ def test
393
+ "test"
394
+ end
395
+ end
396
+ end
397
+ CLASS_DEF
398
+ @dao.put( "agents/var.rb", str )
399
+ @registry.load( "agents/var.rb" )
400
+
401
+ agent = @registry.create "Test::Foo@var.rb"
402
+ assert_equals "test", safe(4){
403
+ agent.test
404
+ }
405
+
406
+ # クラスを更新
407
+ str = <<-CLASS_DEF
408
+ module Test
409
+ class Foo
410
+ include JIJI::Agent
411
+ def test
412
+ "test2"
413
+ end
414
+ end
415
+ end
416
+ CLASS_DEF
417
+ @dao.put( "agents/var.rb", str )
418
+ @registry.load( "agents/var.rb" )
419
+
420
+ agent2 = @registry.create "Test::Foo@var.rb"
421
+ assert_equals ["test","test2"], safe(4){
422
+ [agent.test, agent2.test] # 古いクラスも再作成されるまでは有効
423
+ }
424
+
425
+ # コンパイルエラーになる場合
426
+ str = <<-CLASS_DEF
427
+ module Test
428
+ class Foo
429
+ include JIJI::Agent
430
+ def test
431
+ "test"
432
+ end
433
+ end
434
+ CLASS_DEF
435
+ @dao.put( "agents/var.rb", str )
436
+ begin
437
+ @registry.load( "agents/var.rb" )
438
+ fail
439
+ rescue SyntaxError
440
+ end
441
+
442
+ begin
443
+ @registry.get("Test::Foo@var.rb")
444
+ fail
445
+ rescue JIJI::UserError
446
+ assert_equals JIJI::ERROR_NOT_FOUND, $!.code
447
+ end
448
+ end
449
+
450
+ # 共有ライブラリの更新
451
+ def test_update_sharedlib
452
+
453
+ # 共有ライブラリを使うクラス
454
+ @dao.put "agents/foo.rb", <<-BODY
455
+ class Var
456
+ include JIJI::Agent
457
+ def init
458
+ @s = JIJI::Agent::Shared::SharedLib.new
459
+ end
460
+ def test
461
+ [JIJI::Agent::Shared::VALUE, JIJI::Agent::Shared::SharedLib.new, JIJI::Agent::Shared.m] # 共有ライブラリのAPIを使用。
462
+ end
463
+ def test2
464
+ [JIJI::Agent::Shared::VALUE2, JIJI::Agent::Shared::SharedLib2.new, JIJI::Agent::Shared.m2] # 共有ライブラリのAPIを使用。
465
+ end
466
+ attr_reader :s
467
+ end
468
+ BODY
469
+ @registry.load( "agents/foo.rb" )
470
+
471
+ obj = @registry.create("Var@foo.rb",{})
472
+
473
+ # まだ共有ライブラリがないのでエラー
474
+ begin
475
+ safe(4) { obj.test }
476
+ fail
477
+ rescue
478
+ end
479
+ begin
480
+ safe(4) { obj.init }
481
+ fail
482
+ rescue
483
+ end
484
+
485
+ # 共有ライブラリを定義
486
+ shared_lib_body = <<-BODY
487
+ VALUE='val'
488
+ class SharedLib
489
+ def foo
490
+ "fooo"
491
+ end
492
+ end
493
+ def self.m
494
+ "method called."
495
+ end
496
+ BODY
497
+ assert_equals @dao.put( "shared/shared_lib.rb", shared_lib_body ), :success
498
+ @registry.load( "shared/shared_lib.rb" )
499
+
500
+ assert_equals safe(4){obj.test[0]}, 'val'
501
+ assert_equals safe(4){obj.test[1].foo}, 'fooo'
502
+ assert_equals safe(4){obj.test[2]}, 'method called.'
503
+
504
+ safe(4){ obj.init }
505
+ assert_equals safe(4){obj.s.foo}, 'fooo'
506
+
507
+ obj2 = @registry.create("Var@foo.rb", {})
508
+ assert_equals safe(4){obj2.test[0]}, 'val'
509
+ assert_equals safe(4){obj2.test[1].foo}, 'fooo'
510
+ assert_equals safe(4){obj2.test[2]}, 'method called.'
511
+ safe(4){ obj2.init }
512
+ assert_equals safe(4){obj2.s.foo}, 'fooo'
513
+
514
+ # テスト2はまだ呼び出せない
515
+ begin
516
+ safe(4) { obj.test2 }
517
+ fail
518
+ rescue; end
519
+ begin
520
+ safe(4) { obj2.test2 }
521
+ fail
522
+ rescue; end
523
+
524
+ # 共有ライブラリ2を追加
525
+ shared_lib_body = <<-BODY
526
+ VALUE2=JIJI::Agent::Shared::VALUE + ":" +JIJI::Agent::Shared.m
527
+ class SharedLib2 < JIJI::Agent::Shared::SharedLib
528
+ def foo2
529
+ JIJI::Agent::Shared.m + ":" + JIJI::Agent::Shared::SharedLib.new.foo
530
+ end
531
+ end
532
+ def self.m2
533
+ JIJI::Agent::Shared.m
534
+ end
535
+ BODY
536
+ assert_equals @dao.put( "shared/shared_lib2.rb", shared_lib_body ), :success
537
+ @registry.load( "shared/shared_lib2.rb" )
538
+
539
+ assert_equals safe(4){obj.test[0]}, 'val'
540
+ assert_equals safe(4){obj.test[1].foo}, 'fooo'
541
+ assert_equals safe(4){obj.test[2]}, 'method called.'
542
+ assert_equals safe(4){obj2.test[0]}, 'val'
543
+ assert_equals safe(4){obj2.test[1].foo}, 'fooo'
544
+ assert_equals safe(4){obj2.test[2]}, 'method called.'
545
+ assert_equals safe(4){obj.s.foo}, 'fooo'
546
+ assert_equals safe(4){obj2.s.foo}, 'fooo'
547
+
548
+ assert_equals safe(4){obj.test2[0]}, 'val:method called.'
549
+ assert_equals safe(4){obj.test2[1].foo}, 'fooo'
550
+ assert_equals safe(4){obj.test2[1].foo2}, 'method called.:fooo'
551
+ assert_equals safe(4){obj.test2[2]}, 'method called.'
552
+ assert_equals safe(4){obj2.test2[0]}, 'val:method called.'
553
+ assert_equals safe(4){obj2.test2[1].foo}, 'fooo'
554
+ assert_equals safe(4){obj2.test2[1].foo2}, 'method called.:fooo'
555
+ assert_equals safe(4){obj2.test2[2]}, 'method called.'
556
+
557
+ # 共有ライブラリを上書き更新
558
+ shared_lib_body = <<-BODY
559
+ VALUE='val2'
560
+ class SharedLib
561
+ def foo
562
+ "fooo2"
563
+ end
564
+ end
565
+ def self.m
566
+ "method called2."
567
+ end
568
+ BODY
569
+ assert_equals @dao.put( "shared/shared_lib.rb", shared_lib_body ), :success
570
+ @registry.load( "shared/shared_lib.rb" )
571
+
572
+ assert_equals safe(4){obj.test[0]}, 'val2'
573
+ assert_equals safe(4){obj.test[1].foo}, 'fooo2'
574
+ assert_equals safe(4){obj.test[2]}, 'method called2.'
575
+ assert_equals safe(4){obj2.test[0]}, 'val2'
576
+ assert_equals safe(4){obj2.test[1].foo}, 'fooo2'
577
+ assert_equals safe(4){obj2.test[2]}, 'method called2.'
578
+ # すでに作成済みのインスタンスの動作は変わらない
579
+ assert_equals safe(4){obj.s.foo}, 'fooo'
580
+ assert_equals safe(4){obj2.s.foo}, 'fooo'
581
+ # 再作成すると変わる
582
+ safe(4){
583
+ obj.init
584
+ obj2.init
585
+ }
586
+ assert_equals safe(4){obj.s.foo}, 'fooo2'
587
+ assert_equals safe(4){obj2.s.foo}, 'fooo2'
588
+
589
+ # 依存モジュール内からの呼び出し結果も変わる
590
+ assert_equals safe(4){obj.test2[0]}, 'val:method called.' # 定数は定義の段階で評価されているので変わらない
591
+ assert_equals safe(4){obj.test2[1].foo}, 'fooo'
592
+ assert_equals safe(4){obj.test2[1].foo2}, 'method called2.:fooo2'
593
+ assert_equals safe(4){obj.test2[2]}, 'method called2.'
594
+ assert_equals safe(4){obj2.test2[0]}, 'val:method called.'
595
+ assert_equals safe(4){obj2.test2[1].foo}, 'fooo'
596
+ assert_equals safe(4){obj2.test2[1].foo2}, 'method called2.:fooo2'
597
+ assert_equals safe(4){obj2.test2[2]}, 'method called2.'
598
+ end
599
+
600
+ #階層構造を作成し、load_allするテスト。
601
+ def test_deep_directory
602
+
603
+ # 最初は空
604
+ assert_equals @registry.collect, []
605
+
606
+ # エージェントを追加
607
+ foo_body = "class Foo; include JIJI::Agent; end"
608
+ var_body = <<-BODY
609
+ class Var
610
+ include JIJI::Agent
611
+ def var
612
+ [JIJI::Agent::Shared::VALUE_D1, JIJI::Agent::Shared::VALUE_D2] # 共有ライブラリのAPIを使用。
613
+ end
614
+ end
615
+ BODY
616
+
617
+ @dao.mkcol "agents/folder1"
618
+ @dao.mkcol "agents/folder1/folder2"
619
+
620
+ assert_equals @dao.put( "agents/folder1/foo.rb", foo_body ), :success
621
+ assert_equals @dao.put( "agents/folder1/folder2/var.rb", var_body ), :success
622
+ @registry.load( "agents/folder1/foo.rb" )
623
+ @registry.load( "agents/folder1/folder2/var.rb" )
624
+
625
+ assert_equals @registry.collect.sort!, ["Foo@folder1/foo.rb", "Var@folder1/folder2/var.rb"]
626
+
627
+ obj = @registry.create("Var@folder1/folder2/var.rb",{})
628
+ begin
629
+ safe(4) { obj.var } #共有ライブラリが追加されていないのでエラーになる
630
+ fail
631
+ rescue; end
632
+
633
+ # 共有ライブラリを追加
634
+ @dao.mkcol "shared/folder1"
635
+ @dao.mkcol "shared/folder1/folder2"
636
+
637
+ shared_lib_body = "VALUE_D1='val'"
638
+ shared_lib_body2 = "VALUE_D2='val2'"
639
+ assert_equals @dao.put( "shared/folder1/shared_lib.rb", shared_lib_body ), :success
640
+ assert_equals @dao.put( "shared/folder1/folder2/shared_lib.rb", shared_lib_body2 ), :success
641
+ @registry.load( "shared/folder1/shared_lib.rb" )
642
+ @registry.load( "shared/folder1/folder2/shared_lib.rb" )
643
+
644
+ #定数が定義され、varメソッドが実行できるようになる
645
+ assert_equals safe(4) { obj.var }, ["val", "val2"]
646
+
647
+
648
+ # レジストリを再構築
649
+ @registry = JIJI::AgentRegistry.new( "agents", "shared" )
650
+ @registry.conf = JIJI::Configuration.new
651
+ @registry.file_dao = @dao
652
+ @registry.server_logger = Logger.new STDOUT
653
+ @registry.load_all
654
+
655
+ #エージェントと共有ライブラリが全てロードされていることを確認
656
+ assert_equals @registry.collect.sort!, ["Foo@folder1/foo.rb", "Var@folder1/folder2/var.rb"]
657
+ obj = @registry.create("Var@folder1/folder2/var.rb",{})
658
+ assert_equals safe(4) { obj.var }, ["val", "val2"]
659
+ end
660
+
661
+ end
662
+