unageanu-jiji 1.1.4 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (233) hide show
  1. data/ChangeLog +24 -1
  2. data/README +0 -0
  3. data/base/shared_lib/moving_average.rb +34 -33
  4. data/base/shared_lib/system/cross.rb +76 -0
  5. data/base/shared_lib/system/position_manager.rb +160 -0
  6. data/base/shared_lib/system/signal.rb +347 -0
  7. data/html/css/datatable.css +4 -4
  8. data/html/css/default.css +57 -5
  9. data/html/css/treeview.css +205 -0
  10. data/html/img/bin_closed.png +0 -0
  11. data/html/img/bin_empty.png +0 -0
  12. data/html/img/button_add_small.gif +0 -0
  13. data/html/img/button_add_small_gray.gif +0 -0
  14. data/html/img/button_add_small_over.gif +0 -0
  15. data/html/img/button_mkcol.gif +0 -0
  16. data/html/img/button_mkcol_gray.gif +0 -0
  17. data/html/img/button_mkcol_over.gif +0 -0
  18. data/html/img/button_remove_small.gif +0 -0
  19. data/html/img/button_remove_small_gray.gif +0 -0
  20. data/html/img/button_remove_small_over.gif +0 -0
  21. data/html/img/button_rename.gif +0 -0
  22. data/html/img/button_rename_gray.gif +0 -0
  23. data/html/img/button_rename_over.gif +0 -0
  24. data/html/img/control_play.png +0 -0
  25. data/html/img/control_play_blue.png +0 -0
  26. data/html/img/folder.png +0 -0
  27. data/html/img/folder_brick.png +0 -0
  28. data/html/img/folder_user.png +0 -0
  29. data/html/{js/codepress/images → img}/line-numbers.png +0 -0
  30. data/html/img/page_white_ruby.png +0 -0
  31. data/html/img/sidebar_agent_edit.png +0 -0
  32. data/html/img/sidebar_agent_edit_over.png +0 -0
  33. data/html/img/sidebar_agent_edit_s.png +0 -0
  34. data/html/img/yui/treeview-sprite.gif +0 -0
  35. data/html/index.html +34 -18
  36. data/html/js/agent-editor/agent-editor-page.js +324 -0
  37. data/html/js/agent-editor/agent-editor.js +363 -0
  38. data/html/js/agent-editor/agent-list-tree.js +251 -0
  39. data/html/js/agent-selector.js +23 -28
  40. data/html/js/app.js +63 -91
  41. data/html/js/bt-create-page.js +25 -19
  42. data/html/js/container-min.js +1 -1
  43. data/html/js/container.js +944 -0
  44. data/html/js/edit_area/autocompletion.js +11 -13
  45. data/html/js/edit_area/edit_area.css +79 -40
  46. data/html/js/edit_area/edit_area.js +255 -226
  47. data/html/js/edit_area/edit_area_compressor.php +4 -4
  48. data/html/js/edit_area/edit_area_full.gz +0 -0
  49. data/html/js/edit_area/edit_area_full.js +31 -31
  50. data/html/js/edit_area/edit_area_full_with_plugins.gz +0 -0
  51. data/html/js/edit_area/edit_area_full_with_plugins.js +31 -31
  52. data/html/js/edit_area/edit_area_functions.js +448 -341
  53. data/html/js/edit_area/edit_area_loader.js +409 -397
  54. data/html/js/edit_area/elements_functions.js +120 -123
  55. data/html/js/edit_area/highlight.js +305 -197
  56. data/html/js/edit_area/images/goto.png +0 -0
  57. data/html/js/edit_area/images/help.png +0 -0
  58. data/html/js/edit_area/images/redo.png +0 -0
  59. data/html/js/edit_area/images/save.png +0 -0
  60. data/html/js/edit_area/images/search.png +0 -0
  61. data/html/js/edit_area/images/undo.png +0 -0
  62. data/html/js/edit_area/images/word_wrap.gif +0 -0
  63. data/html/js/edit_area/keyboard.js +5 -5
  64. data/html/js/edit_area/langs/bg.js +73 -0
  65. data/html/js/edit_area/langs/cs.js +2 -0
  66. data/html/js/edit_area/langs/de.js +2 -0
  67. data/html/js/edit_area/langs/dk.js +2 -0
  68. data/html/js/edit_area/langs/en.js +2 -0
  69. data/html/js/edit_area/langs/eo.js +2 -0
  70. data/html/js/edit_area/langs/es.js +2 -0
  71. data/html/js/edit_area/langs/fi.js +67 -0
  72. data/html/js/edit_area/langs/fr.js +2 -0
  73. data/html/js/edit_area/langs/hr.js +2 -0
  74. data/html/js/edit_area/langs/it.js +2 -0
  75. data/html/js/edit_area/langs/ja.js +2 -0
  76. data/html/js/edit_area/langs/mk.js +2 -0
  77. data/html/js/edit_area/langs/nl.js +2 -0
  78. data/html/js/edit_area/langs/pl.js +2 -0
  79. data/html/js/edit_area/langs/pt.js +2 -0
  80. data/html/js/edit_area/langs/ru.js +2 -0
  81. data/html/js/edit_area/langs/sk.js +2 -0
  82. data/html/js/edit_area/langs/zh.js +67 -0
  83. data/html/js/edit_area/manage_area.js +362 -205
  84. data/html/js/edit_area/plugins/charmap/langs/bg.js +12 -0
  85. data/html/js/edit_area/plugins/charmap/langs/zh.js +6 -0
  86. data/html/js/edit_area/plugins/test/langs/bg.js +10 -0
  87. data/html/js/edit_area/plugins/test/langs/zh.js +4 -0
  88. data/html/js/edit_area/reg_syntax/java.js +56 -0
  89. data/html/js/edit_area/reg_syntax/ruby.js +9 -9
  90. data/html/js/edit_area/reg_syntax.js +15 -13
  91. data/html/js/edit_area/regexp.js +36 -32
  92. data/html/js/edit_area/resize_area.js +43 -47
  93. data/html/js/edit_area/search_replace.js +29 -29
  94. data/html/js/edit_area/template.html +6 -4
  95. data/html/js/json-broker-client.js +23 -17
  96. data/html/js/result-page.js +107 -57
  97. data/html/js/rt-setting-page.js +38 -15
  98. data/html/js/sidebar.js +41 -27
  99. data/html/js/templates.js +167 -32
  100. data/html/js/utils.js +143 -7
  101. data/html/js/yui/treeview.js +3671 -0
  102. data/html/swf/chart.swf +0 -0
  103. data/html/test/agent_editor_spec.js +815 -0
  104. data/html/test/index.html +40 -0
  105. data/html/test/jsspec/JSSpec.css +224 -0
  106. data/html/test/jsspec/JSSpec.js +1549 -0
  107. data/html/test/jsspec/diff_match_patch.js +1 -0
  108. data/html/test/utils_spec.js +111 -0
  109. data/lib/jiji/agent/agent.rb +69 -12
  110. data/lib/jiji/agent/agent_manager.rb +18 -12
  111. data/lib/jiji/agent/agent_registry.rb +35 -121
  112. data/lib/jiji/collector.rb +16 -6
  113. data/lib/jiji/command.rb +46 -5
  114. data/lib/jiji/dao/file_system_dao.rb +158 -0
  115. data/lib/jiji/dao/timed_data_dao.rb +2 -0
  116. data/lib/jiji/dao/trade_result_dao.rb +1 -1
  117. data/lib/jiji/error.rb +24 -8
  118. data/lib/jiji/migration/migrator1_2_0.rb +67 -0
  119. data/lib/jiji/models.rb +82 -24
  120. data/lib/jiji/operator.rb +55 -51
  121. data/lib/jiji/output.rb +85 -29
  122. data/lib/jiji/output_manager.rb +84 -0
  123. data/lib/jiji/plugin/embedded/single_click_client.rb +2 -2
  124. data/lib/jiji/plugin/securities_plugin.rb +0 -1
  125. data/lib/jiji/process.rb +229 -208
  126. data/lib/jiji/process_manager.rb +190 -96
  127. data/lib/jiji/registry.rb +87 -19
  128. data/lib/jiji/server.rb +1 -0
  129. data/lib/jiji/service/agent_service.rb +147 -48
  130. data/lib/jiji/service/output_service.rb +37 -17
  131. data/lib/jiji/service/process_service.rb +3 -5
  132. data/lib/jiji/service/trade_result_service.rb +4 -5
  133. data/lib/jiji/util/file_lock.rb +4 -4
  134. data/lib/jiji/util/include_proxy.rb +17 -0
  135. data/lib/jiji/util/json_broker.rb +6 -4
  136. data/lib/jiji/util/util.rb +1 -1
  137. data/swf/chart/fx/chart/Chart.as +7 -0
  138. data/swf/chart/fx/chart/ui/graph/GraphManager.as +15 -2
  139. data/test/ProcessTest/agents/foo.rb +10 -0
  140. data/test/ProcessTest/conf/configuration.yaml +3 -0
  141. data/test/agent/agent_tests.rb +10 -0
  142. data/test/agent/test_AgentManager.rb +28 -12
  143. data/test/agent/test_AgentRegistry.rb +194 -99
  144. data/test/agent/test_PeriodicallyAgent.rb +1 -2
  145. data/test/agent/test_Permitter.rb +1 -2
  146. data/test/all_tests.rb +7 -19
  147. data/test/dao/dao_tests.rb +9 -0
  148. data/test/dao/test_FileSystemDao.rb +431 -0
  149. data/test/dao/test_RateDao.rb +5 -7
  150. data/test/dao/test_TradeResultDao.rb +1 -2
  151. data/test/migration/migration_tests.rb +10 -0
  152. data/test/migration/migrator1_2_0test_data/basic/out/M2NlOTA2ODEtZDdlNi00NWU1LWIwNDQtMjBmODY2ZGNkNzBj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  153. data/test/migration/migrator1_2_0test_data/basic/out/MDVhYzcxMjYtMGFlMS00Mzk0LWEyNmUtYjVjZjgwNDA0ZmE2/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  154. data/test/migration/migrator1_2_0test_data/basic/out/MzA1YTk0NDgtNzhjNi00NDk3LTk2NTktYzE1ZjBhNzdiYjNj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  155. data/test/migration/migrator1_2_0test_data/basic/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/meta.yaml +9 -0
  156. data/test/migration/migrator1_2_0test_data/basic/props.yaml +85 -0
  157. data/test/migration/migrator1_2_0test_data/illegal_props/out/M2NlOTA2ODEtZDdlNi00NWU1LWIwNDQtMjBmODY2ZGNkNzBj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  158. data/test/migration/migrator1_2_0test_data/illegal_props/out/MDVhYzcxMjYtMGFlMS00Mzk0LWEyNmUtYjVjZjgwNDA0ZmE2/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  159. data/test/migration/migrator1_2_0test_data/illegal_props/out/MzA1YTk0NDgtNzhjNi00NDk3LTk2NTktYzE1ZjBhNzdiYjNj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  160. data/test/migration/migrator1_2_0test_data/illegal_props/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/meta.yaml +9 -0
  161. data/test/migration/migrator1_2_0test_data/illegal_props/props.yaml +1 -0
  162. data/test/migration/migrator1_2_0test_data/no_outs/props.yaml +85 -0
  163. data/test/migration/migrator1_2_0test_data/no_props/out/M2NlOTA2ODEtZDdlNi00NWU1LWIwNDQtMjBmODY2ZGNkNzBj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  164. data/test/migration/migrator1_2_0test_data/no_props/out/MDVhYzcxMjYtMGFlMS00Mzk0LWEyNmUtYjVjZjgwNDA0ZmE2/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  165. data/test/migration/migrator1_2_0test_data/no_props/out/MzA1YTk0NDgtNzhjNi00NDk3LTk2NTktYzE1ZjBhNzdiYjNj/56e75YuV5bmz5Z2H57ea/meta.yaml +8 -0
  166. data/test/migration/migrator1_2_0test_data/no_props/out/YjRkOTI1MzEtZTM4MS00YjQwLTg1ZTQtMWFmZDRlNDUwMzBm/56e75YuV5bmz5Z2H57ea/meta.yaml +9 -0
  167. data/test/migration/test_Migrator.rb +1 -1
  168. data/test/migration/test_Migrator1_0_3.rb +1 -1
  169. data/test/migration/test_Migrator1_1_0.rb +1 -1
  170. data/test/migration/test_Migrator1_2_0.rb +94 -0
  171. data/test/plugin/embedded/test_SingleClickClient.rb +1 -2
  172. data/test/plugin/plugin_tests.rb +8 -0
  173. data/test/plugin/test_Loader.rb +1 -1
  174. data/test/shared/rate.csv +144 -0
  175. data/test/shared/shared_tests.rb +9 -0
  176. data/test/shared/test_Cross.rb +144 -0
  177. data/test/shared/test_PositionManager.rb +285 -0
  178. data/test/shared/test_Signal.rb +65 -0
  179. data/test/test_Output.rb +28 -21
  180. data/test/test_OutputManager.rb +162 -0
  181. data/test/test_Output_registry.rb +6 -17
  182. data/test/test_Process.rb +434 -222
  183. data/test/test_ProcessManager.rb +458 -101
  184. data/test/test_utils.rb +71 -8
  185. data/test/util/test_BlockToSession.rb +1 -2
  186. data/test/util/test_CSV.rb +1 -2
  187. data/test/util/test_SynchronizeInterceptor.rb +1 -2
  188. data/test/util/util_tests.rb +9 -0
  189. metadata +127 -47
  190. data/html/js/agent-editor-page.js +0 -440
  191. data/html/js/codepress/codepress.css +0 -21
  192. data/html/js/codepress/codepress.html +0 -35
  193. data/html/js/codepress/codepress.js +0 -138
  194. data/html/js/codepress/engines/gecko.js +0 -293
  195. data/html/js/codepress/engines/khtml.js +0 -0
  196. data/html/js/codepress/engines/msie.js +0 -304
  197. data/html/js/codepress/engines/older.js +0 -0
  198. data/html/js/codepress/engines/opera.js +0 -260
  199. data/html/js/codepress/images/line-numbers.gif +0 -0
  200. data/html/js/codepress/index.html +0 -443
  201. data/html/js/codepress/languages/asp.css +0 -71
  202. data/html/js/codepress/languages/asp.js +0 -117
  203. data/html/js/codepress/languages/autoit.css +0 -13
  204. data/html/js/codepress/languages/autoit.js +0 -32
  205. data/html/js/codepress/languages/csharp.css +0 -9
  206. data/html/js/codepress/languages/csharp.js +0 -25
  207. data/html/js/codepress/languages/css.css +0 -10
  208. data/html/js/codepress/languages/css.js +0 -23
  209. data/html/js/codepress/languages/generic.css +0 -9
  210. data/html/js/codepress/languages/generic.js +0 -25
  211. data/html/js/codepress/languages/html.css +0 -13
  212. data/html/js/codepress/languages/html.js +0 -59
  213. data/html/js/codepress/languages/java.css +0 -7
  214. data/html/js/codepress/languages/java.js +0 -24
  215. data/html/js/codepress/languages/javascript.css +0 -8
  216. data/html/js/codepress/languages/javascript.js +0 -30
  217. data/html/js/codepress/languages/perl.css +0 -11
  218. data/html/js/codepress/languages/perl.js +0 -27
  219. data/html/js/codepress/languages/php.css +0 -12
  220. data/html/js/codepress/languages/php.js +0 -61
  221. data/html/js/codepress/languages/ruby.css +0 -10
  222. data/html/js/codepress/languages/ruby.js +0 -26
  223. data/html/js/codepress/languages/sql.css +0 -10
  224. data/html/js/codepress/languages/sql.js +0 -30
  225. data/html/js/codepress/languages/text.css +0 -5
  226. data/html/js/codepress/languages/text.js +0 -9
  227. data/html/js/codepress/languages/vbscript.css +0 -71
  228. data/html/js/codepress/languages/vbscript.js +0 -117
  229. data/html/js/codepress/languages/xsl.css +0 -15
  230. data/html/js/codepress/languages/xsl.js +0 -103
  231. data/html/js/codepress/license.txt +0 -458
  232. data/html/js/edit_area/images/Thumbs.db +0 -0
  233. data/test/plugin/test_gem/a/lib/jiji_plugin_test.rb +0 -6
@@ -0,0 +1,431 @@
1
+ #!/usr/bin/ruby
2
+
3
+ $: << "../lib"
4
+
5
+ require 'runit/testcase'
6
+ require 'runit/cui/testrunner'
7
+ require 'jiji/dao/file_system_dao'
8
+ require 'rubygems'
9
+ require 'test_utils'
10
+
11
+ #FileSystemDaoのテスト
12
+ class FileSystemDaoTest < RUNIT::TestCase
13
+
14
+ include Test::Constants
15
+
16
+ #前準備
17
+ def setup
18
+ @dir = File.dirname(__FILE__) + "/FileSystemDao.tmp"
19
+ FileUtils.mkdir_p @dir
20
+
21
+ @dao = JIJI::Dao::FileSystemDao.new( @dir )
22
+
23
+ @dao.mkcol "folder1"
24
+ @dao.add( "file1", "1" )
25
+ @dao.put( "file2", "2" )
26
+ @dao.add( "folder1/file1-1", "1-1" )
27
+ @dao.put( "folder1/file1-2", "1-2" )
28
+ end
29
+
30
+ #後始末
31
+ def teardown
32
+ FileUtils.rm_rf @dir
33
+ end
34
+
35
+ #基本動作のテスト
36
+ def test_basic
37
+
38
+ #フォルダとファイルを追加で作成
39
+ @dao.mkcol "folder2"
40
+ @dao.mkcol "folder2/folder2-1"
41
+ @dao.mkcol "folder2/folder2-2"
42
+ @dao.mkcol "folder2/folder2-1/folder2-1-1"
43
+ @dao.mkcol "folder2/folder2-1/folder2-1-2"
44
+ @dao.mkcol "folder2/folder2-2/folder2-2-1"
45
+ @dao.add( "folder2/folder2-1/folder2-1-1/file2-1-1", "2-1-1" )
46
+ @dao.put( "folder2/folder2-1/folder2-1-1/file2-1-2", "2-1-2" )
47
+
48
+ assert_equals( list, [
49
+ "folder1:directory",
50
+ "folder2:directory",
51
+ "file1:file",
52
+ "file2:file"
53
+ ])
54
+ assert_equals( list("folder1"), [
55
+ "file1-1:file",
56
+ "file1-2:file"
57
+ ])
58
+ assert_equals( list("folder2"), [
59
+ "folder2-1:directory",
60
+ "folder2-2:directory"
61
+ ])
62
+ assert_equals( list("folder2/folder2-1"), [
63
+ "folder2-1-1:directory",
64
+ "folder2-1-2:directory"
65
+ ])
66
+ assert_equals( list("folder2/folder2-2"), [
67
+ "folder2-2-1:directory"
68
+ ])
69
+ assert_equals( list("folder2/folder2-1/folder2-1-1"), [
70
+ "file2-1-1:file",
71
+ "file2-1-2:file"
72
+ ])
73
+ assert_equals( list("folder2/folder2-1/folder2-1-2"), [])
74
+ assert_equals( list("folder2/folder2-2/folder2-2-1"), [])
75
+
76
+
77
+ #再帰探索
78
+ assert_equals( list_r, [
79
+ "folder1:directory",
80
+ "folder2:directory",
81
+ "folder2/folder2-1:directory",
82
+ "folder2/folder2-1/folder2-1-1:directory",
83
+ "folder2/folder2-1/folder2-1-2:directory",
84
+ "folder2/folder2-2:directory",
85
+ "folder2/folder2-2/folder2-2-1:directory",
86
+ "file1:file",
87
+ "file2:file",
88
+ "folder1/file1-1:file",
89
+ "folder1/file1-2:file",
90
+ "folder2/folder2-1/folder2-1-1/file2-1-1:file",
91
+ "folder2/folder2-1/folder2-1-1/file2-1-2:file"
92
+ ]);
93
+ assert_equals( list_r("folder1"), [
94
+ "folder1/file1-1:file",
95
+ "folder1/file1-2:file"
96
+ ])
97
+ assert_equals( list_r("folder2"), [
98
+ "folder2/folder2-1:directory",
99
+ "folder2/folder2-1/folder2-1-1:directory",
100
+ "folder2/folder2-1/folder2-1-2:directory",
101
+ "folder2/folder2-2:directory",
102
+ "folder2/folder2-2/folder2-2-1:directory",
103
+ "folder2/folder2-1/folder2-1-1/file2-1-1:file",
104
+ "folder2/folder2-1/folder2-1-1/file2-1-2:file"
105
+ ])
106
+ assert_equals( list_r("folder2/folder2-1"), [
107
+ "folder2/folder2-1/folder2-1-1:directory",
108
+ "folder2/folder2-1/folder2-1-2:directory",
109
+ "folder2/folder2-1/folder2-1-1/file2-1-1:file",
110
+ "folder2/folder2-1/folder2-1-1/file2-1-2:file"
111
+ ])
112
+ assert_equals( list_r("folder2/folder2-2"), [
113
+ "folder2/folder2-2/folder2-2-1:directory"
114
+ ])
115
+ assert_equals( list_r("folder2/folder2-1/folder2-1-1"), [
116
+ "folder2/folder2-1/folder2-1-1/file2-1-1:file",
117
+ "folder2/folder2-1/folder2-1-1/file2-1-2:file"
118
+ ])
119
+ assert_equals( list_r("folder2/folder2-1/folder2-1-2"), [])
120
+ assert_equals( list_r("folder2/folder2-2/folder2-2-1"), [])
121
+
122
+ #取得
123
+ assert_equals( @dao.get("file1"), "1")
124
+ assert_equals( @dao.get("file2"), "2")
125
+ assert_equals( @dao.get("folder1/file1-1"), "1-1")
126
+ assert_equals( @dao.get("folder1/file1-2"), "1-2")
127
+ assert_equals( @dao.get("folder2/folder2-1/folder2-1-1/file2-1-1"), "2-1-1")
128
+ assert_equals( @dao.get("folder2/folder2-1/folder2-1-1/file2-1-2"), "2-1-2")
129
+
130
+ #更新
131
+ @dao.put( "file1", "100" )
132
+ assert_equals( @dao.get("file1"), "100")
133
+
134
+ #移動
135
+ @dao.rename("file1", "file3")
136
+ @dao.move("file2", "folder1")
137
+ @dao.rename("folder1/file2", "folder1/file4")
138
+ @dao.rename("folder1", "folder3")
139
+ @dao.move("folder2", "folder3")
140
+ assert_equals( list, [
141
+ "folder3:directory",
142
+ "file3:file"
143
+ ])
144
+ assert_equals( list("folder3"), [
145
+ "folder2:directory",
146
+ "file1-1:file",
147
+ "file1-2:file",
148
+ "file4:file"
149
+ ])
150
+
151
+ #コピー
152
+ @dao.copy("file3", "file1")
153
+ @dao.copy("folder3/file4", "file2")
154
+ @dao.copy("folder3", "folder1")
155
+ @dao.copy("folder3/folder2", "folder2")
156
+ assert_equals( list, [
157
+ "folder1:directory",
158
+ "folder2:directory",
159
+ "folder3:directory",
160
+ "file1:file",
161
+ "file2:file",
162
+ "file3:file"
163
+ ])
164
+ assert_equals( list("folder3"), [
165
+ "folder2:directory",
166
+ "file1-1:file",
167
+ "file1-2:file",
168
+ "file4:file"
169
+ ])
170
+
171
+ #削除
172
+ @dao.delete("file3")
173
+ @dao.delete("folder3")
174
+ @dao.delete("folder1/file1-2")
175
+ @dao.delete("folder1/folder2")
176
+ assert_equals( list, [
177
+ "folder1:directory",
178
+ "folder2:directory",
179
+ "file1:file",
180
+ "file2:file"
181
+ ])
182
+ assert_equals( list("folder1"), [
183
+ "file1-1:file",
184
+ "file4:file"
185
+ ])
186
+
187
+ end
188
+
189
+ ILLEGAL_PATHS = [
190
+ "./folder1",
191
+ "../folder1",
192
+ "folder1/../..",
193
+ "folder1/../../",
194
+ "folder1/.",
195
+ "folder1/.test",
196
+ "/ /",
197
+ "/日本語もエラー"
198
+ ]
199
+
200
+ #一覧取得の異常系のテスト
201
+ def test_error_list
202
+
203
+ #一覧に"."で始まるファイル/フォルダは含まれない。
204
+ FileUtils.touch( "#{@dir}/.test" )
205
+ FileUtils.mkdir( "#{@dir}/.test_folder" )
206
+ assert_equals( list, [
207
+ "folder1:directory",
208
+ "file1:file",
209
+ "file2:file"
210
+ ])
211
+
212
+ #パスが不正
213
+ ILLEGAL_PATHS.each {|path|
214
+ assert_raise( JIJI::UserError, JIJI::ERROR_ILLEGAL_NAME ) {
215
+ @dao.list( path )
216
+ }
217
+ }
218
+
219
+ #ディレクトリが存在しない
220
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
221
+ @dao.list( "not_found" )
222
+ }
223
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
224
+ @dao.list( "folder1/not_found" )
225
+ }
226
+
227
+
228
+ #ファイル
229
+ assert_raise( JIJI::UserError, JIJI::ERROR_IS_NOT_FOLDER ) {
230
+ @dao.list( "file1" )
231
+ }
232
+ assert_raise( JIJI::UserError, JIJI::ERROR_IS_NOT_FOLDER ) {
233
+ @dao.list( "folder1/file1-1" )
234
+ }
235
+ end
236
+
237
+ #ファイル取得の異常系のテスト
238
+ def test_error_get
239
+ #パスが不正
240
+ ILLEGAL_PATHS.each {|path|
241
+ assert_raise( JIJI::UserError, JIJI::ERROR_ILLEGAL_NAME ) {
242
+ @dao.get( path )
243
+ }
244
+ }
245
+
246
+ #ファイルが存在しない
247
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
248
+ @dao.get( "not_found" )
249
+ }
250
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
251
+ @dao.get( "folder1/not_found" )
252
+ }
253
+
254
+ #フォルダが指定された
255
+ assert_raise( JIJI::UserError, JIJI::ERROR_IS_NOT_FILE ) {
256
+ @dao.get( "folder1" )
257
+ }
258
+ end
259
+
260
+ #ファイル更新の異常系のテスト
261
+ def test_error_put
262
+ #パスが不正
263
+ ILLEGAL_PATHS.each {|path|
264
+ assert_raise( JIJI::UserError, JIJI::ERROR_ILLEGAL_NAME ) {
265
+ @dao.put( path, "test." )
266
+ }
267
+ }
268
+ #親ディレクトリが存在しない
269
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
270
+ @dao.put( "not_found/test", "test." )
271
+ }
272
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
273
+ @dao.put( "folder1/not_found/test", "test." )
274
+ }
275
+
276
+ #親ディレクトリがファイル
277
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
278
+ @dao.put( "file1/test", "test." )
279
+ }
280
+
281
+ #フォルダがすでに存在する
282
+ assert_raise( JIJI::UserError, JIJI::ERROR_IS_NOT_FILE ) {
283
+ @dao.put( "folder1", "test." )
284
+ }
285
+ end
286
+
287
+ #ファイル作成の異常系のテスト
288
+ def test_error_add
289
+ #パスが不正
290
+ ILLEGAL_PATHS.each {|path|
291
+ assert_raise( JIJI::UserError, JIJI::ERROR_ILLEGAL_NAME ) {
292
+ @dao.add( path, "test." )
293
+ }
294
+ }
295
+ #親ディレクトリが存在しない
296
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
297
+ @dao.add( "not_found/test", "test." )
298
+ }
299
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
300
+ @dao.add( "folder1/not_found/test", "test." )
301
+ }
302
+
303
+ #親ディレクトリがファイル
304
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
305
+ @dao.add( "file1/test", "test." )
306
+ }
307
+
308
+ #ファイルがすでに存在する
309
+ assert_raise( JIJI::UserError, JIJI::ERROR_ALREADY_EXIST ) {
310
+ @dao.add( "folder1", "test." )
311
+ }
312
+ #フォルダがすでに存在する
313
+ assert_raise( JIJI::UserError, JIJI::ERROR_ALREADY_EXIST ) {
314
+ @dao.add( "folder1", "test." )
315
+ }
316
+ end
317
+
318
+ #フォルダ作成の異常系のテスト
319
+ def test_error_mkcol
320
+ #パスが不正
321
+ ILLEGAL_PATHS.each {|path|
322
+ assert_raise( JIJI::UserError, JIJI::ERROR_ILLEGAL_NAME ) {
323
+ @dao.mkcol( path )
324
+ }
325
+ }
326
+ #親ディレクトリが存在しない
327
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
328
+ @dao.mkcol( "not_found/test" )
329
+ }
330
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
331
+ @dao.mkcol( "folder1/not_found/test" )
332
+ }
333
+
334
+ #親ディレクトリがファイル
335
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
336
+ @dao.mkcol( "file1/test" )
337
+ }
338
+
339
+ #フォルダがすでに存在する
340
+ assert_raise( JIJI::UserError, JIJI::ERROR_ALREADY_EXIST ) {
341
+ @dao.mkcol( "folder1" )
342
+ }
343
+ #ファイルがすでに存在する
344
+ assert_raise( JIJI::UserError, JIJI::ERROR_ALREADY_EXIST ) {
345
+ @dao.mkcol( "file1" )
346
+ }
347
+ end
348
+
349
+ #削除の異常系のテスト
350
+ def test_error_delete
351
+ #パスが不正
352
+ ILLEGAL_PATHS.each {|path|
353
+ assert_raise( JIJI::UserError, JIJI::ERROR_ILLEGAL_NAME ) {
354
+ @dao.delete( path )
355
+ }
356
+ }
357
+ #対象が存在しない
358
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
359
+ @dao.delete( "not_found" )
360
+ }
361
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
362
+ @dao.delete( "folder1/not_found" )
363
+ }
364
+ end
365
+
366
+ #コピーの異常系のテスト
367
+ def test_error_copy
368
+ #パスが不正
369
+ ILLEGAL_PATHS.each {|path|
370
+ assert_raise( JIJI::UserError, JIJI::ERROR_ILLEGAL_NAME ) {
371
+ @dao.copy( path, "test" )
372
+ }
373
+ assert_raise( JIJI::UserError, JIJI::ERROR_ILLEGAL_NAME ) {
374
+ @dao.copy( "file1", path )
375
+ }
376
+ }
377
+ #対象が存在しない
378
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
379
+ @dao.copy( "not_found", "folder1" )
380
+ }
381
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
382
+ @dao.copy( "folder1/not_found", "folder1" )
383
+ }
384
+ end
385
+
386
+ #移動の異常系のテスト
387
+ def test_error_move
388
+ #パスが不正
389
+ ILLEGAL_PATHS.each {|path|
390
+ assert_raise( JIJI::UserError, JIJI::ERROR_ILLEGAL_NAME ) {
391
+ @dao.move( path, "test" )
392
+ }
393
+ assert_raise( JIJI::UserError, JIJI::ERROR_ILLEGAL_NAME ) {
394
+ @dao.move( "file1", path )
395
+ }
396
+ }
397
+ #対象が存在しない
398
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
399
+ @dao.move( "not_found", "folder1" )
400
+ }
401
+ assert_raise( JIJI::UserError, JIJI::ERROR_NOT_FOUND ) {
402
+ @dao.move( "folder1/not_found", "folder1" )
403
+ }
404
+ end
405
+
406
+ def list( path="" )
407
+ @dao.list(path).map {|item|
408
+ assert_not_nil item[:update]
409
+ assert_equals item[:path], path.empty? ? item[:name] : "#{path}/#{item[:name]}"
410
+ "#{item[:name]}:#{item[:type]}"
411
+ }
412
+ end
413
+
414
+ def list_r( path="" )
415
+ @dao.list(path, true).map {|item|
416
+ assert_not_nil item[:update]
417
+ assert_equals item[:name], File.basename(item[:path])
418
+ "#{item[:path]}:#{item[:type]}"
419
+ }
420
+ end
421
+
422
+ def assert_raise( type, code )
423
+ begin
424
+ yield
425
+ fail
426
+ rescue type
427
+ assert_equals $!.code, code
428
+ end
429
+ end
430
+
431
+ end
@@ -1,14 +1,12 @@
1
1
  #!/usr/bin/ruby
2
2
 
3
- $: << "../../lib"
4
- $: << "../"
3
+ $: << "../lib"
5
4
 
6
5
  require 'runit/testcase'
7
6
  require 'runit/cui/testrunner'
8
7
  require 'jiji/dao/rate_dao'
9
8
  require 'fileutils'
10
9
  require 'rubygems'
11
- require 'clickclient'
12
10
  require 'test_utils'
13
11
 
14
12
  class RateDaoTest < RUNIT::TestCase
@@ -29,8 +27,8 @@ class RateDaoTest < RUNIT::TestCase
29
27
  def test_basic
30
28
 
31
29
  pair_infos = {
32
- ClickClient::FX::USDJPY => Info.new( 10000 ),
33
- ClickClient::FX::AUDUSD => Info.new( 10000 )
30
+ :USDJPY => Info.new( 10000 ),
31
+ :AUDUSD => Info.new( 10000 )
34
32
  }
35
33
 
36
34
  # 書き込み
@@ -504,8 +502,8 @@ class RateDaoTest < RUNIT::TestCase
504
502
  def test_each_all_pair_rates__lack
505
503
 
506
504
  pair_infos = {
507
- ClickClient::FX::EURJPY => Info.new( 10000 ),
508
- ClickClient::FX::AUDUSD => Info.new( 10000 )
505
+ :EURJPY => Info.new( 10000 ),
506
+ :AUDUSD => Info.new( 10000 )
509
507
  }
510
508
 
511
509
  # 最初のデータがない
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/ruby
2
2
 
3
- $: << "../../lib"
4
- $: << "../"
3
+ $: << "../lib"
5
4
 
6
5
  require 'rubygems'
7
6
  require 'runit/testcase'
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'rubygems'
4
+ require 'runit/testcase'
5
+ require 'runit/cui/testrunner'
6
+
7
+ require 'migration/test_Migrator'
8
+ require 'migration/test_Migrator1_0_3'
9
+ require 'migration/test_Migrator1_1_0'
10
+ require 'migration/test_Migrator1_2_0'
@@ -0,0 +1,8 @@
1
+ ---
2
+ :type: graph
3
+ :column_count: 2
4
+ :graph_type: :rate
5
+ :name: "\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
6
+ :colors:
7
+ - "#779999"
8
+ - "#557777"
@@ -0,0 +1,8 @@
1
+ ---
2
+ :type: graph
3
+ :column_count: 2
4
+ :colors:
5
+ - "#779999"
6
+ - "#557777"
7
+ :graph_type: :rate
8
+ :name: "\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
@@ -0,0 +1,8 @@
1
+ ---
2
+ :type: graph
3
+ :column_count: 2
4
+ :colors:
5
+ - "#779999"
6
+ - "#557777"
7
+ :graph_type: :rate
8
+ :name: "\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
@@ -0,0 +1,9 @@
1
+ ---
2
+ :type: graph
3
+ :column_count: 2
4
+ :visible: true
5
+ :colors:
6
+ - "#553399"
7
+ - "#1177dd"
8
+ :graph_type: :rate
9
+ :name: "\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
@@ -0,0 +1,85 @@
1
+ ---
2
+ trade_enable: true
3
+ agents:
4
+ - name: "\xE5\x90\x8D\xE7\xA7\xB0\xE6\x9C\xAA\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\xA8\xE3\x83\xBC\xE3\x82\xB8\xE3\x82\xA7\xE3\x83\xB3\xE3\x83\x881"
5
+ class_name: MovingAverageAgent
6
+ class: MovingAverageAgent@moving_average_agent.rb
7
+ id: b4d92531-e381-4b40-85e4-1afd4e45030f
8
+ file_name: moving_average_agent.rb
9
+ description: "\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE3\x82\x92\xE4\xBD\xBF\xE3\x81\x86\xE3\x82\xA8\xE3\x83\xBC\xE3\x82\xB8\xE3\x82\xA7\xE3\x83\xB3\xE3\x83\x88\xE3\x81\xA7\xE3\x81\x99\xE3\x80\x82\n -\xE3\x82\xB4\xE3\x83\xBC\xE3\x83\xAB\xE3\x83\x87\xE3\x83\xB3\xE3\x82\xAF\xE3\x83\xAD\xE3\x82\xB9\xE3\x81\xA7\xE8\xB2\xB7\xE3\x81\x84&\xE5\xA3\xB2\xE3\x82\x8A\xE5\xBB\xBA\xE3\x81\xA6\xE7\x8E\x89\xE3\x82\x92\xE3\x82\xB3\xE3\x83\x9F\xE3\x83\x83\xE3\x83\x88\xE3\x80\x82\n -\xE3\x83\x87\xE3\x83\x83\xE3\x83\x89\xE3\x82\xAF\xE3\x83\xAD\xE3\x82\xB9\xE3\x81\xA7\xE5\xA3\xB2\xE3\x82\x8A&\xE8\xB2\xB7\xE3\x81\x84\xE5\xBB\xBA\xE3\x81\xA6\xE7\x8E\x89\xE3\x82\x92\xE3\x82\xB3\xE3\x83\x9F\xE3\x83\x83\xE3\x83\x88\xE3\x80\x82\n"
10
+ property_def:
11
+ period:
12
+ name: "\xE3\x83\xAC\xE3\x83\xBC\xE3\x83\x88\xE3\x81\xAE\xE9\x80\x9A\xE7\x9F\xA5\xE3\x82\x92\xE5\x8F\x97\xE3\x81\x91\xE5\x8F\x96\xE3\x82\x8B\xE9\x96\x93\xE9\x9A\x94(\xE5\x88\x86)"
13
+ default: 10
14
+ id: period
15
+ type: number
16
+ short:
17
+ name: "\xE7\x9F\xAD\xE6\x9C\x9F\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
18
+ default: 25
19
+ id: short
20
+ type: number
21
+ long:
22
+ name: "\xE9\x95\xB7\xE6\x9C\x9F\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
23
+ default: 75
24
+ id: long
25
+ type: number
26
+ state: ""
27
+ properties:
28
+ period: 10
29
+ short: 25
30
+ long: 75
31
+ - name: "\xE5\x90\x8D\xE7\xA7\xB0\xE6\x9C\xAA\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\xA8\xE3\x83\xBC\xE3\x82\xB8\xE3\x82\xA7\xE3\x83\xB3\xE3\x83\x882"
32
+ class_name: MovingAverageAgent
33
+ class: MovingAverageAgent@moving_average_agent.rb
34
+ id: 305a9448-78c6-4497-9659-c15f0a77bb3c
35
+ file_name: moving_average_agent.rb
36
+ description: "\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE3\x82\x92\xE4\xBD\xBF\xE3\x81\x86\xE3\x82\xA8\xE3\x83\xBC\xE3\x82\xB8\xE3\x82\xA7\xE3\x83\xB3\xE3\x83\x88\xE3\x81\xA7\xE3\x81\x99\xE3\x80\x82\n -\xE3\x82\xB4\xE3\x83\xBC\xE3\x83\xAB\xE3\x83\x87\xE3\x83\xB3\xE3\x82\xAF\xE3\x83\xAD\xE3\x82\xB9\xE3\x81\xA7\xE8\xB2\xB7\xE3\x81\x84&\xE5\xA3\xB2\xE3\x82\x8A\xE5\xBB\xBA\xE3\x81\xA6\xE7\x8E\x89\xE3\x82\x92\xE3\x82\xB3\xE3\x83\x9F\xE3\x83\x83\xE3\x83\x88\xE3\x80\x82\n -\xE3\x83\x87\xE3\x83\x83\xE3\x83\x89\xE3\x82\xAF\xE3\x83\xAD\xE3\x82\xB9\xE3\x81\xA7\xE5\xA3\xB2\xE3\x82\x8A&\xE8\xB2\xB7\xE3\x81\x84\xE5\xBB\xBA\xE3\x81\xA6\xE7\x8E\x89\xE3\x82\x92\xE3\x82\xB3\xE3\x83\x9F\xE3\x83\x83\xE3\x83\x88\xE3\x80\x82\n"
37
+ property_def:
38
+ period:
39
+ name: "\xE3\x83\xAC\xE3\x83\xBC\xE3\x83\x88\xE3\x81\xAE\xE9\x80\x9A\xE7\x9F\xA5\xE3\x82\x92\xE5\x8F\x97\xE3\x81\x91\xE5\x8F\x96\xE3\x82\x8B\xE9\x96\x93\xE9\x9A\x94(\xE5\x88\x86)"
40
+ default: 10
41
+ id: period
42
+ type: number
43
+ short:
44
+ name: "\xE7\x9F\xAD\xE6\x9C\x9F\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
45
+ default: 25
46
+ id: short
47
+ type: number
48
+ long:
49
+ name: "\xE9\x95\xB7\xE6\x9C\x9F\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
50
+ default: 75
51
+ id: long
52
+ type: number
53
+ state: ""
54
+ properties:
55
+ period: 10
56
+ short: 25
57
+ long: 75
58
+ - name: "\xE5\x90\x8D\xE7\xA7\xB0\xE6\x9C\xAA\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\xA8\xE3\x83\xBC\xE3\x82\xB8\xE3\x82\xA7\xE3\x83\xB3\xE3\x83\x882"
59
+ class_name: MovingAverageAgent
60
+ class: MovingAverageAgent@moving_average_agent.rb
61
+ id: 405a9448-78c6-4497-9659-c15f0a77bb3c
62
+ file_name: moving_average_agent.rb
63
+ description: "\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE3\x82\x92\xE4\xBD\xBF\xE3\x81\x86\xE3\x82\xA8\xE3\x83\xBC\xE3\x82\xB8\xE3\x82\xA7\xE3\x83\xB3\xE3\x83\x88\xE3\x81\xA7\xE3\x81\x99\xE3\x80\x82\n -\xE3\x82\xB4\xE3\x83\xBC\xE3\x83\xAB\xE3\x83\x87\xE3\x83\xB3\xE3\x82\xAF\xE3\x83\xAD\xE3\x82\xB9\xE3\x81\xA7\xE8\xB2\xB7\xE3\x81\x84&\xE5\xA3\xB2\xE3\x82\x8A\xE5\xBB\xBA\xE3\x81\xA6\xE7\x8E\x89\xE3\x82\x92\xE3\x82\xB3\xE3\x83\x9F\xE3\x83\x83\xE3\x83\x88\xE3\x80\x82\n -\xE3\x83\x87\xE3\x83\x83\xE3\x83\x89\xE3\x82\xAF\xE3\x83\xAD\xE3\x82\xB9\xE3\x81\xA7\xE5\xA3\xB2\xE3\x82\x8A&\xE8\xB2\xB7\xE3\x81\x84\xE5\xBB\xBA\xE3\x81\xA6\xE7\x8E\x89\xE3\x82\x92\xE3\x82\xB3\xE3\x83\x9F\xE3\x83\x83\xE3\x83\x88\xE3\x80\x82\n"
64
+ property_def:
65
+ period:
66
+ name: "\xE3\x83\xAC\xE3\x83\xBC\xE3\x83\x88\xE3\x81\xAE\xE9\x80\x9A\xE7\x9F\xA5\xE3\x82\x92\xE5\x8F\x97\xE3\x81\x91\xE5\x8F\x96\xE3\x82\x8B\xE9\x96\x93\xE9\x9A\x94(\xE5\x88\x86)"
67
+ default: 10
68
+ id: period
69
+ type: number
70
+ short:
71
+ name: "\xE7\x9F\xAD\xE6\x9C\x9F\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
72
+ default: 25
73
+ id: short
74
+ type: number
75
+ long:
76
+ name: "\xE9\x95\xB7\xE6\x9C\x9F\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
77
+ default: 75
78
+ id: long
79
+ type: number
80
+ state: ""
81
+ properties:
82
+ period: 10
83
+ short: 25
84
+ long: 75
85
+ state: :RUNNING
@@ -0,0 +1,8 @@
1
+ ---
2
+ :type: graph
3
+ :column_count: 2
4
+ :graph_type: :rate
5
+ :name: "\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
6
+ :colors:
7
+ - "#779999"
8
+ - "#557777"
@@ -0,0 +1,8 @@
1
+ ---
2
+ :type: graph
3
+ :column_count: 2
4
+ :colors:
5
+ - "#779999"
6
+ - "#557777"
7
+ :graph_type: :rate
8
+ :name: "\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
@@ -0,0 +1,8 @@
1
+ ---
2
+ :type: graph
3
+ :column_count: 2
4
+ :colors:
5
+ - "#779999"
6
+ - "#557777"
7
+ :graph_type: :rate
8
+ :name: "\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
@@ -0,0 +1,9 @@
1
+ ---
2
+ :type: graph
3
+ :column_count: 2
4
+ :visible: true
5
+ :colors:
6
+ - "#553399"
7
+ - "#1177dd"
8
+ :graph_type: :rate
9
+ :name: "\xE7\xA7\xBB\xE5\x8B\x95\xE5\xB9\xB3\xE5\x9D\x87\xE7\xB7\x9A"
@@ -0,0 +1 @@
1
+ illegal yaml file.