fluentd 1.17.0 → 1.17.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (259) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +46 -0
  3. data/README.md +1 -0
  4. data/SECURITY.md +2 -2
  5. data/fluent.conf +14 -14
  6. data/lib/fluent/command/cap_ctl.rb +4 -4
  7. data/lib/fluent/compat/call_super_mixin.rb +3 -3
  8. data/lib/fluent/compat/propagate_default.rb +4 -4
  9. data/lib/fluent/config/yaml_parser/parser.rb +4 -0
  10. data/lib/fluent/log/console_adapter.rb +4 -2
  11. data/lib/fluent/plugin/in_exec.rb +14 -2
  12. data/lib/fluent/plugin/in_http.rb +1 -1
  13. data/lib/fluent/plugin/in_sample.rb +13 -7
  14. data/lib/fluent/plugin/in_tail.rb +65 -23
  15. data/lib/fluent/plugin/out_copy.rb +1 -1
  16. data/lib/fluent/plugin/out_file.rb +8 -0
  17. data/lib/fluent/plugin/out_http.rb +12 -0
  18. data/lib/fluent/plugin/parser_json.rb +4 -12
  19. data/lib/fluent/plugin_helper/http_server/server.rb +1 -1
  20. data/lib/fluent/version.rb +1 -1
  21. data/templates/new_gem/fluent-plugin.gemspec.erb +6 -5
  22. metadata +25 -472
  23. data/.github/DISCUSSION_TEMPLATE/q-a-japanese.yml +0 -50
  24. data/.github/DISCUSSION_TEMPLATE/q-a.yml +0 -47
  25. data/.github/ISSUE_TEMPLATE/bug_report.yml +0 -71
  26. data/.github/ISSUE_TEMPLATE/config.yml +0 -5
  27. data/.github/ISSUE_TEMPLATE/feature_request.yml +0 -39
  28. data/.github/ISSUE_TEMPLATE.md +0 -17
  29. data/.github/PULL_REQUEST_TEMPLATE.md +0 -14
  30. data/.github/workflows/stale-actions.yml +0 -24
  31. data/.github/workflows/test-ruby-head.yml +0 -31
  32. data/.github/workflows/test.yml +0 -32
  33. data/.gitignore +0 -30
  34. data/Gemfile +0 -9
  35. data/fluentd.gemspec +0 -62
  36. data/test/command/test_binlog_reader.rb +0 -362
  37. data/test/command/test_ca_generate.rb +0 -70
  38. data/test/command/test_cap_ctl.rb +0 -100
  39. data/test/command/test_cat.rb +0 -128
  40. data/test/command/test_ctl.rb +0 -56
  41. data/test/command/test_fluentd.rb +0 -1291
  42. data/test/command/test_plugin_config_formatter.rb +0 -397
  43. data/test/command/test_plugin_generator.rb +0 -109
  44. data/test/compat/test_calls_super.rb +0 -166
  45. data/test/compat/test_parser.rb +0 -92
  46. data/test/config/assertions.rb +0 -42
  47. data/test/config/test_config_parser.rb +0 -551
  48. data/test/config/test_configurable.rb +0 -1784
  49. data/test/config/test_configure_proxy.rb +0 -604
  50. data/test/config/test_dsl.rb +0 -415
  51. data/test/config/test_element.rb +0 -518
  52. data/test/config/test_literal_parser.rb +0 -309
  53. data/test/config/test_plugin_configuration.rb +0 -56
  54. data/test/config/test_section.rb +0 -191
  55. data/test/config/test_system_config.rb +0 -195
  56. data/test/config/test_types.rb +0 -408
  57. data/test/counter/test_client.rb +0 -563
  58. data/test/counter/test_error.rb +0 -44
  59. data/test/counter/test_mutex_hash.rb +0 -179
  60. data/test/counter/test_server.rb +0 -589
  61. data/test/counter/test_store.rb +0 -258
  62. data/test/counter/test_validator.rb +0 -137
  63. data/test/helper.rb +0 -155
  64. data/test/helpers/fuzzy_assert.rb +0 -89
  65. data/test/helpers/process_extenstion.rb +0 -33
  66. data/test/log/test_console_adapter.rb +0 -117
  67. data/test/plugin/data/2010/01/20100102-030405.log +0 -0
  68. data/test/plugin/data/2010/01/20100102-030406.log +0 -0
  69. data/test/plugin/data/2010/01/20100102.log +0 -0
  70. data/test/plugin/data/log/bar +0 -0
  71. data/test/plugin/data/log/foo/bar.log +0 -0
  72. data/test/plugin/data/log/foo/bar2 +0 -0
  73. data/test/plugin/data/log/test.log +0 -0
  74. data/test/plugin/data/log_numeric/01.log +0 -0
  75. data/test/plugin/data/log_numeric/02.log +0 -0
  76. data/test/plugin/data/log_numeric/12.log +0 -0
  77. data/test/plugin/data/log_numeric/14.log +0 -0
  78. data/test/plugin/data/sd_file/config +0 -11
  79. data/test/plugin/data/sd_file/config.json +0 -17
  80. data/test/plugin/data/sd_file/config.yaml +0 -11
  81. data/test/plugin/data/sd_file/config.yml +0 -11
  82. data/test/plugin/data/sd_file/invalid_config.yml +0 -7
  83. data/test/plugin/in_tail/test_fifo.rb +0 -121
  84. data/test/plugin/in_tail/test_io_handler.rb +0 -150
  85. data/test/plugin/in_tail/test_position_file.rb +0 -346
  86. data/test/plugin/out_forward/test_ack_handler.rb +0 -140
  87. data/test/plugin/out_forward/test_connection_manager.rb +0 -145
  88. data/test/plugin/out_forward/test_handshake_protocol.rb +0 -112
  89. data/test/plugin/out_forward/test_load_balancer.rb +0 -106
  90. data/test/plugin/out_forward/test_socket_cache.rb +0 -174
  91. data/test/plugin/test_bare_output.rb +0 -131
  92. data/test/plugin/test_base.rb +0 -247
  93. data/test/plugin/test_buf_file.rb +0 -1314
  94. data/test/plugin/test_buf_file_single.rb +0 -898
  95. data/test/plugin/test_buf_memory.rb +0 -42
  96. data/test/plugin/test_buffer.rb +0 -1493
  97. data/test/plugin/test_buffer_chunk.rb +0 -209
  98. data/test/plugin/test_buffer_file_chunk.rb +0 -871
  99. data/test/plugin/test_buffer_file_single_chunk.rb +0 -611
  100. data/test/plugin/test_buffer_memory_chunk.rb +0 -339
  101. data/test/plugin/test_compressable.rb +0 -87
  102. data/test/plugin/test_file_util.rb +0 -96
  103. data/test/plugin/test_filter.rb +0 -368
  104. data/test/plugin/test_filter_grep.rb +0 -697
  105. data/test/plugin/test_filter_parser.rb +0 -731
  106. data/test/plugin/test_filter_record_transformer.rb +0 -577
  107. data/test/plugin/test_filter_stdout.rb +0 -207
  108. data/test/plugin/test_formatter_csv.rb +0 -136
  109. data/test/plugin/test_formatter_hash.rb +0 -38
  110. data/test/plugin/test_formatter_json.rb +0 -61
  111. data/test/plugin/test_formatter_ltsv.rb +0 -70
  112. data/test/plugin/test_formatter_msgpack.rb +0 -28
  113. data/test/plugin/test_formatter_out_file.rb +0 -116
  114. data/test/plugin/test_formatter_single_value.rb +0 -44
  115. data/test/plugin/test_formatter_tsv.rb +0 -76
  116. data/test/plugin/test_in_debug_agent.rb +0 -49
  117. data/test/plugin/test_in_exec.rb +0 -261
  118. data/test/plugin/test_in_forward.rb +0 -1178
  119. data/test/plugin/test_in_gc_stat.rb +0 -62
  120. data/test/plugin/test_in_http.rb +0 -1124
  121. data/test/plugin/test_in_monitor_agent.rb +0 -922
  122. data/test/plugin/test_in_object_space.rb +0 -66
  123. data/test/plugin/test_in_sample.rb +0 -190
  124. data/test/plugin/test_in_syslog.rb +0 -505
  125. data/test/plugin/test_in_tail.rb +0 -3429
  126. data/test/plugin/test_in_tcp.rb +0 -328
  127. data/test/plugin/test_in_udp.rb +0 -296
  128. data/test/plugin/test_in_unix.rb +0 -181
  129. data/test/plugin/test_input.rb +0 -137
  130. data/test/plugin/test_metadata.rb +0 -89
  131. data/test/plugin/test_metrics.rb +0 -294
  132. data/test/plugin/test_metrics_local.rb +0 -96
  133. data/test/plugin/test_multi_output.rb +0 -204
  134. data/test/plugin/test_out_copy.rb +0 -308
  135. data/test/plugin/test_out_exec.rb +0 -312
  136. data/test/plugin/test_out_exec_filter.rb +0 -606
  137. data/test/plugin/test_out_file.rb +0 -1038
  138. data/test/plugin/test_out_forward.rb +0 -1349
  139. data/test/plugin/test_out_http.rb +0 -557
  140. data/test/plugin/test_out_null.rb +0 -105
  141. data/test/plugin/test_out_relabel.rb +0 -28
  142. data/test/plugin/test_out_roundrobin.rb +0 -146
  143. data/test/plugin/test_out_secondary_file.rb +0 -458
  144. data/test/plugin/test_out_stdout.rb +0 -205
  145. data/test/plugin/test_out_stream.rb +0 -103
  146. data/test/plugin/test_output.rb +0 -1334
  147. data/test/plugin/test_output_as_buffered.rb +0 -2024
  148. data/test/plugin/test_output_as_buffered_backup.rb +0 -363
  149. data/test/plugin/test_output_as_buffered_compress.rb +0 -179
  150. data/test/plugin/test_output_as_buffered_overflow.rb +0 -250
  151. data/test/plugin/test_output_as_buffered_retries.rb +0 -966
  152. data/test/plugin/test_output_as_buffered_secondary.rb +0 -882
  153. data/test/plugin/test_output_as_standard.rb +0 -374
  154. data/test/plugin/test_owned_by.rb +0 -34
  155. data/test/plugin/test_parser.rb +0 -399
  156. data/test/plugin/test_parser_apache.rb +0 -42
  157. data/test/plugin/test_parser_apache2.rb +0 -47
  158. data/test/plugin/test_parser_apache_error.rb +0 -45
  159. data/test/plugin/test_parser_csv.rb +0 -200
  160. data/test/plugin/test_parser_json.rb +0 -244
  161. data/test/plugin/test_parser_labeled_tsv.rb +0 -160
  162. data/test/plugin/test_parser_msgpack.rb +0 -127
  163. data/test/plugin/test_parser_multiline.rb +0 -111
  164. data/test/plugin/test_parser_nginx.rb +0 -88
  165. data/test/plugin/test_parser_none.rb +0 -52
  166. data/test/plugin/test_parser_regexp.rb +0 -284
  167. data/test/plugin/test_parser_syslog.rb +0 -650
  168. data/test/plugin/test_parser_tsv.rb +0 -122
  169. data/test/plugin/test_sd_file.rb +0 -228
  170. data/test/plugin/test_sd_srv.rb +0 -230
  171. data/test/plugin/test_storage.rb +0 -166
  172. data/test/plugin/test_storage_local.rb +0 -335
  173. data/test/plugin/test_string_util.rb +0 -26
  174. data/test/plugin_helper/data/cert/cert-key.pem +0 -27
  175. data/test/plugin_helper/data/cert/cert-with-CRLF.pem +0 -19
  176. data/test/plugin_helper/data/cert/cert-with-no-newline.pem +0 -19
  177. data/test/plugin_helper/data/cert/cert.pem +0 -19
  178. data/test/plugin_helper/data/cert/cert_chains/ca-cert-key.pem +0 -27
  179. data/test/plugin_helper/data/cert/cert_chains/ca-cert.pem +0 -20
  180. data/test/plugin_helper/data/cert/cert_chains/cert-key.pem +0 -27
  181. data/test/plugin_helper/data/cert/cert_chains/cert.pem +0 -40
  182. data/test/plugin_helper/data/cert/empty.pem +0 -0
  183. data/test/plugin_helper/data/cert/generate_cert.rb +0 -125
  184. data/test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem +0 -30
  185. data/test/plugin_helper/data/cert/with_ca/ca-cert-key.pem +0 -27
  186. data/test/plugin_helper/data/cert/with_ca/ca-cert-pass.pem +0 -20
  187. data/test/plugin_helper/data/cert/with_ca/ca-cert.pem +0 -20
  188. data/test/plugin_helper/data/cert/with_ca/cert-key-pass.pem +0 -30
  189. data/test/plugin_helper/data/cert/with_ca/cert-key.pem +0 -27
  190. data/test/plugin_helper/data/cert/with_ca/cert-pass.pem +0 -21
  191. data/test/plugin_helper/data/cert/with_ca/cert.pem +0 -21
  192. data/test/plugin_helper/data/cert/without_ca/cert-key-pass.pem +0 -30
  193. data/test/plugin_helper/data/cert/without_ca/cert-key.pem +0 -27
  194. data/test/plugin_helper/data/cert/without_ca/cert-pass.pem +0 -20
  195. data/test/plugin_helper/data/cert/without_ca/cert.pem +0 -20
  196. data/test/plugin_helper/http_server/test_app.rb +0 -65
  197. data/test/plugin_helper/http_server/test_route.rb +0 -32
  198. data/test/plugin_helper/service_discovery/test_manager.rb +0 -93
  199. data/test/plugin_helper/service_discovery/test_round_robin_balancer.rb +0 -21
  200. data/test/plugin_helper/test_cert_option.rb +0 -25
  201. data/test/plugin_helper/test_child_process.rb +0 -862
  202. data/test/plugin_helper/test_compat_parameters.rb +0 -358
  203. data/test/plugin_helper/test_event_emitter.rb +0 -80
  204. data/test/plugin_helper/test_event_loop.rb +0 -52
  205. data/test/plugin_helper/test_extract.rb +0 -194
  206. data/test/plugin_helper/test_formatter.rb +0 -255
  207. data/test/plugin_helper/test_http_server_helper.rb +0 -372
  208. data/test/plugin_helper/test_inject.rb +0 -561
  209. data/test/plugin_helper/test_metrics.rb +0 -137
  210. data/test/plugin_helper/test_parser.rb +0 -264
  211. data/test/plugin_helper/test_record_accessor.rb +0 -238
  212. data/test/plugin_helper/test_retry_state.rb +0 -1006
  213. data/test/plugin_helper/test_server.rb +0 -1895
  214. data/test/plugin_helper/test_service_discovery.rb +0 -165
  215. data/test/plugin_helper/test_socket.rb +0 -146
  216. data/test/plugin_helper/test_storage.rb +0 -542
  217. data/test/plugin_helper/test_thread.rb +0 -164
  218. data/test/plugin_helper/test_timer.rb +0 -130
  219. data/test/scripts/exec_script.rb +0 -32
  220. data/test/scripts/fluent/plugin/formatter1/formatter_test1.rb +0 -7
  221. data/test/scripts/fluent/plugin/formatter2/formatter_test2.rb +0 -7
  222. data/test/scripts/fluent/plugin/formatter_known.rb +0 -8
  223. data/test/scripts/fluent/plugin/out_test.rb +0 -81
  224. data/test/scripts/fluent/plugin/out_test2.rb +0 -80
  225. data/test/scripts/fluent/plugin/parser_known.rb +0 -4
  226. data/test/test_capability.rb +0 -74
  227. data/test/test_clock.rb +0 -164
  228. data/test/test_config.rb +0 -369
  229. data/test/test_configdsl.rb +0 -148
  230. data/test/test_daemonizer.rb +0 -91
  231. data/test/test_engine.rb +0 -203
  232. data/test/test_event.rb +0 -531
  233. data/test/test_event_router.rb +0 -348
  234. data/test/test_event_time.rb +0 -199
  235. data/test/test_file_wrapper.rb +0 -53
  236. data/test/test_filter.rb +0 -121
  237. data/test/test_fluent_log_event_router.rb +0 -99
  238. data/test/test_formatter.rb +0 -369
  239. data/test/test_input.rb +0 -31
  240. data/test/test_log.rb +0 -1076
  241. data/test/test_match.rb +0 -148
  242. data/test/test_mixin.rb +0 -351
  243. data/test/test_msgpack_factory.rb +0 -50
  244. data/test/test_oj_options.rb +0 -55
  245. data/test/test_output.rb +0 -278
  246. data/test/test_plugin.rb +0 -251
  247. data/test/test_plugin_classes.rb +0 -370
  248. data/test/test_plugin_helper.rb +0 -81
  249. data/test/test_plugin_id.rb +0 -119
  250. data/test/test_process.rb +0 -14
  251. data/test/test_root_agent.rb +0 -951
  252. data/test/test_static_config_analysis.rb +0 -177
  253. data/test/test_supervisor.rb +0 -821
  254. data/test/test_test_drivers.rb +0 -136
  255. data/test/test_time_formatter.rb +0 -301
  256. data/test/test_time_parser.rb +0 -362
  257. data/test/test_tls.rb +0 -65
  258. data/test/test_unique_id.rb +0 -47
  259. data/test/test_variable_store.rb +0 -65
@@ -1,166 +0,0 @@
1
- require_relative '../helper'
2
- require 'fluent/plugin/storage'
3
- require 'fluent/plugin/base'
4
-
5
- class DummyPlugin < Fluent::Plugin::TestBase
6
- end
7
-
8
- class BareStorage < Fluent::Plugin::Storage
9
- Fluent::Plugin.register_storage('bare', self)
10
- end
11
-
12
- class BasicStorage < Fluent::Plugin::Storage
13
- Fluent::Plugin.register_storage('example', self)
14
-
15
- attr_reader :data, :saved
16
-
17
- def initialize
18
- super
19
- @data = @saved = nil
20
- end
21
- def load
22
- @data = {}
23
- end
24
- def save
25
- @saved = @data.dup
26
- end
27
- def get(key)
28
- @data[key]
29
- end
30
- def fetch(key, defval)
31
- @data.fetch(key, defval)
32
- end
33
- def put(key, value)
34
- @data[key] = value
35
- end
36
- def delete(key)
37
- @data.delete(key)
38
- end
39
- def update(key, &block)
40
- @data[key] = block.call(@data[key])
41
- end
42
- def close
43
- @data = {}
44
- super
45
- end
46
- def terminate
47
- @saved = {}
48
- super
49
- end
50
- end
51
-
52
- class StorageTest < Test::Unit::TestCase
53
- sub_test_case 'BareStorage' do
54
- setup do
55
- plugin = DummyPlugin.new
56
- @s = BareStorage.new
57
- @s.configure(config_element())
58
- @s.owner = plugin
59
- end
60
-
61
- test 'is configured with plugin information and system config' do
62
- plugin = DummyPlugin.new
63
- plugin.system_config_override({'process_name' => 'mytest'})
64
- plugin.configure(config_element('ROOT', '', {'@id' => '1'}))
65
- s = BareStorage.new
66
- s.configure(config_element())
67
- s.owner = plugin
68
-
69
- assert_equal 'mytest', s.owner.system_config.process_name
70
- assert_equal '1', s.instance_eval{ @_plugin_id }
71
- end
72
-
73
- test 'does NOT have features for high-performance/high-consistent storages' do
74
- assert_equal false, @s.persistent_always?
75
- assert_equal false, @s.synchronized?
76
- end
77
-
78
- test 'does have default values which is conservative for almost all users' do
79
- assert_equal false, @s.persistent
80
- assert_equal true, @s.autosave
81
- assert_equal 10, @s.autosave_interval
82
- assert_equal true, @s.save_at_shutdown
83
- end
84
-
85
- test 'load/save doesn NOT anything: just as memory storage' do
86
- assert_nothing_raised{ @s.load }
87
- assert_nothing_raised{ @s.save }
88
- end
89
-
90
- test 'all operations are not defined yet' do
91
- assert_raise NotImplementedError do
92
- @s.get('key')
93
- end
94
- assert_raise NotImplementedError do
95
- @s.fetch('key', 'value')
96
- end
97
- assert_raise NotImplementedError do
98
- @s.put('key', 'value')
99
- end
100
- assert_raise NotImplementedError do
101
- @s.delete('key')
102
- end
103
- assert_raise NotImplementedError do
104
- @s.update('key'){ |v| v + '2' }
105
- end
106
- end
107
- end
108
-
109
- sub_test_case 'ExampleStorage' do
110
- setup do
111
- plugin = DummyPlugin.new
112
- plugin.configure(config_element('ROOT', '', {'@id' => '1'}))
113
- @s = BasicStorage.new
114
- @s.configure(config_element())
115
- @s.owner = plugin
116
- end
117
-
118
- test 'load/save works well as plugin internal state operations' do
119
- plugin = DummyPlugin.new
120
- plugin.configure(config_element('ROOT', '', {'@id' => '0'}))
121
- s = BasicStorage.new
122
- s.owner = plugin
123
-
124
- assert_nothing_raised{ s.load }
125
- assert s.data
126
- assert_nil s.saved
127
-
128
- assert_nothing_raised{ s.save }
129
- assert s.saved
130
- assert{ s.data == s.saved }
131
- assert{ s.data.object_id != s.saved.object_id }
132
- end
133
-
134
- test 'all operations work well' do
135
- @s.load
136
-
137
- assert_nil @s.get('key')
138
- assert_equal 'value', @s.fetch('key', 'value')
139
- assert_nil @s.get('key')
140
-
141
- assert_equal 'value', @s.put('key', 'value')
142
- assert_equal 'value', @s.get('key')
143
-
144
- assert_equal 'valuevalue', @s.update('key'){|v| v * 2 }
145
-
146
- assert_equal 'valuevalue', @s.delete('key')
147
- end
148
-
149
- test 'close and terminate work to operate internal states' do
150
- @s.load
151
- @s.put('k1', 'v1')
152
- @s.put('k2', 'v2')
153
- assert_equal 2, @s.data.size
154
- @s.save
155
- assert_equal @s.data.size, @s.saved.size
156
-
157
- assert_nothing_raised{ @s.close }
158
- assert @s.data.empty?
159
- assert !@s.saved.empty?
160
-
161
- assert_nothing_raised{ @s.terminate }
162
- assert @s.data.empty?
163
- assert @s.saved.empty?
164
- end
165
- end
166
- end
@@ -1,335 +0,0 @@
1
- require_relative '../helper'
2
- require 'fluent/plugin/storage_local'
3
- require 'fluent/plugin/input'
4
- require 'fluent/system_config'
5
- require 'fileutils'
6
-
7
- class LocalStorageTest < Test::Unit::TestCase
8
- TMP_DIR = File.expand_path(File.dirname(__FILE__) + "/tmp/storage_local#{ENV['TEST_ENV_NUMBER']}")
9
-
10
- class MyInput < Fluent::Plugin::Input
11
- helpers :storage
12
- config_section :storage do
13
- config_set_default :@type, 'local'
14
- end
15
- end
16
-
17
- setup do
18
- FileUtils.rm_rf(TMP_DIR)
19
- FileUtils.mkdir_p(TMP_DIR)
20
- Fluent::Test.setup
21
- @d = MyInput.new
22
- end
23
-
24
- teardown do
25
- @d.stop unless @d.stopped?
26
- @d.before_shutdown unless @d.before_shutdown?
27
- @d.shutdown unless @d.shutdown?
28
- @d.after_shutdown unless @d.after_shutdown?
29
- @d.close unless @d.closed?
30
- @d.terminate unless @d.terminated?
31
- end
32
-
33
- sub_test_case 'without any configuration' do
34
- test 'works as on-memory storage' do
35
- conf = config_element()
36
-
37
- @d.configure(conf)
38
- @d.start
39
- @p = @d.storage_create()
40
-
41
- assert_nil @p.path
42
- assert @p.store.empty?
43
-
44
- assert_nil @p.get('key1')
45
- assert_equal 'EMPTY', @p.fetch('key1', 'EMPTY')
46
-
47
- @p.put('key1', '1')
48
- assert_equal '1', @p.get('key1')
49
-
50
- @p.update('key1') do |v|
51
- (v.to_i * 2).to_s
52
- end
53
- assert_equal '2', @p.get('key1')
54
-
55
- @p.save # on-memory storage does nothing...
56
-
57
- @d.stop; @d.before_shutdown; @d.shutdown; @d.after_shutdown; @d.close; @d.terminate
58
-
59
- # re-create to reload storage contents
60
- @d = MyInput.new
61
- @d.configure(conf)
62
- @d.start
63
- @p = @d.storage_create()
64
-
65
- assert @p.store.empty?
66
- end
67
-
68
- test 'warns about on-memory storage if autosave is true' do
69
- @d.configure(config_element())
70
- @d.start
71
- @p = @d.storage_create()
72
-
73
- logs = @d.log.out.logs
74
- assert{ logs.any?{|log| log.include?("[warn]: both of Plugin @id and path for <storage> are not specified. Using on-memory store.") } }
75
- end
76
-
77
- test 'show info log about on-memory storage if autosave is false' do
78
- @d.configure(config_element('ROOT', '', {}, [config_element('storage', '', {'autosave' => 'false'})]))
79
- @d.start
80
- @p = @d.storage_create()
81
-
82
- logs = @d.log.out.logs
83
- assert{ logs.any?{|log| log.include?("[info]: both of Plugin @id and path for <storage> are not specified. Using on-memory store.") } }
84
- end
85
- end
86
-
87
- sub_test_case 'configured with file path' do
88
- test 'works as storage which stores data on disk' do
89
- storage_path = File.join(TMP_DIR, 'my_store.json')
90
- conf = config_element('ROOT', '', {}, [config_element('storage', '', {'path' => storage_path})])
91
- @d.configure(conf)
92
- @d.start
93
- @p = @d.storage_create()
94
-
95
- assert_equal storage_path, @p.path
96
- assert @p.store.empty?
97
-
98
- assert_nil @p.get('key1')
99
- assert_equal 'EMPTY', @p.fetch('key1', 'EMPTY')
100
-
101
- @p.put('key1', '1')
102
- assert_equal '1', @p.get('key1')
103
-
104
- @p.update('key1') do |v|
105
- (v.to_i * 2).to_s
106
- end
107
- assert_equal '2', @p.get('key1')
108
-
109
- @p.save # stores all data into file
110
-
111
- assert File.exist?(storage_path)
112
-
113
- @p.put('key2', 4)
114
-
115
- @d.stop; @d.before_shutdown; @d.shutdown; @d.after_shutdown; @d.close; @d.terminate
116
-
117
- assert_equal({'key1' => '2', 'key2' => 4}, File.open(storage_path){|f| JSON.parse(f.read) })
118
-
119
- # re-create to reload storage contents
120
- @d = MyInput.new
121
- @d.configure(conf)
122
- @d.start
123
- @p = @d.storage_create()
124
-
125
- assert_false @p.store.empty?
126
-
127
- assert_equal '2', @p.get('key1')
128
- assert_equal 4, @p.get('key2')
129
- end
130
-
131
- test 'raise configuration error if a file specified with multi worker configuration' do
132
- storage_path = File.join(TMP_DIR, 'my_store.json')
133
- conf = config_element('ROOT', '', {}, [config_element('storage', '', {'path' => storage_path})])
134
- @d.system_config_override('workers' => 3)
135
- assert_raise Fluent::ConfigError.new("Plugin 'local' does not support multi workers configuration (Fluent::Plugin::LocalStorage)") do
136
- @d.configure(conf)
137
- end
138
- end
139
- end
140
-
141
- sub_test_case 'configured with root-dir and plugin id' do
142
- test 'works as storage which stores data under root dir' do
143
- root_dir = File.join(TMP_DIR, 'root')
144
- expected_storage_path = File.join(root_dir, 'worker0', 'local_storage_test', 'storage.json')
145
- conf = config_element('ROOT', '', {'@id' => 'local_storage_test'})
146
- Fluent::SystemConfig.overwrite_system_config('root_dir' => root_dir) do
147
- @d.configure(conf)
148
- end
149
- @d.start
150
- @p = @d.storage_create()
151
-
152
- assert_equal expected_storage_path, @p.path
153
- assert @p.store.empty?
154
-
155
- assert_nil @p.get('key1')
156
- assert_equal 'EMPTY', @p.fetch('key1', 'EMPTY')
157
-
158
- @p.put('key1', '1')
159
- assert_equal '1', @p.get('key1')
160
-
161
- @p.update('key1') do |v|
162
- (v.to_i * 2).to_s
163
- end
164
- assert_equal '2', @p.get('key1')
165
-
166
- @p.save # stores all data into file
167
-
168
- assert File.exist?(expected_storage_path)
169
-
170
- @p.put('key2', 4)
171
-
172
- @d.stop; @d.before_shutdown; @d.shutdown; @d.after_shutdown; @d.close; @d.terminate
173
-
174
- assert_equal({'key1' => '2', 'key2' => 4}, File.open(expected_storage_path){|f| JSON.parse(f.read) })
175
-
176
- # re-create to reload storage contents
177
- @d = MyInput.new
178
- Fluent::SystemConfig.overwrite_system_config('root_dir' => root_dir) do
179
- @d.configure(conf)
180
- end
181
- @d.start
182
- @p = @d.storage_create()
183
-
184
- assert_false @p.store.empty?
185
-
186
- assert_equal '2', @p.get('key1')
187
- assert_equal 4, @p.get('key2')
188
- end
189
-
190
- test 'works with customized path by specified usage' do
191
- root_dir = File.join(TMP_DIR, 'root')
192
- expected_storage_path = File.join(root_dir, 'worker0', 'local_storage_test', 'storage.usage.json')
193
- conf = config_element('ROOT', 'usage', {'@id' => 'local_storage_test'})
194
- Fluent::SystemConfig.overwrite_system_config('root_dir' => root_dir) do
195
- @d.configure(conf)
196
- end
197
- @d.start
198
- @p = @d.storage_create(usage: 'usage', type: 'local')
199
-
200
- assert_equal expected_storage_path, @p.path
201
- assert @p.store.empty?
202
- end
203
- end
204
-
205
- sub_test_case 'configured with root-dir and plugin id, and multi workers' do
206
- test 'works as storage which stores data under root dir, also in workers' do
207
- root_dir = File.join(TMP_DIR, 'root')
208
- expected_storage_path = File.join(root_dir, 'worker1', 'local_storage_test', 'storage.json')
209
- conf = config_element('ROOT', '', {'@id' => 'local_storage_test'})
210
- with_worker_config(root_dir: root_dir, workers: 2, worker_id: 1) do
211
- @d.configure(conf)
212
- end
213
- @d.start
214
- @p = @d.storage_create()
215
-
216
- assert_equal expected_storage_path, @p.path
217
- assert @p.store.empty?
218
- end
219
- end
220
-
221
- sub_test_case 'persistent specified' do
222
- test 'works well with path' do
223
- omit "It's hard to test on Windows" if Fluent.windows?
224
-
225
- storage_path = File.join(TMP_DIR, 'my_store.json')
226
- conf = config_element('ROOT', '', {}, [config_element('storage', '', {'path' => storage_path, 'persistent' => 'true'})])
227
- @d.configure(conf)
228
- @d.start
229
- @p = @d.storage_create()
230
-
231
- assert_equal storage_path, @p.path
232
- assert @p.store.empty?
233
-
234
- assert_nil @p.get('key1')
235
- assert_equal 'EMPTY', @p.fetch('key1', 'EMPTY')
236
-
237
- @p.put('key1', '1')
238
- assert_equal({'key1' => '1'}, File.open(storage_path){|f| JSON.parse(f.read) })
239
-
240
- @p.update('key1') do |v|
241
- (v.to_i * 2).to_s
242
- end
243
- assert_equal({'key1' => '2'}, File.open(storage_path){|f| JSON.parse(f.read) })
244
- end
245
-
246
- test 'works well with root-dir and plugin id' do
247
- omit "It's hard to test on Windows" if Fluent.windows?
248
-
249
- root_dir = File.join(TMP_DIR, 'root')
250
- expected_storage_path = File.join(root_dir, 'worker0', 'local_storage_test', 'storage.json')
251
- conf = config_element('ROOT', '', {'@id' => 'local_storage_test'}, [config_element('storage', '', {'persistent' => 'true'})])
252
- Fluent::SystemConfig.overwrite_system_config('root_dir' => root_dir) do
253
- @d.configure(conf)
254
- end
255
- @d.start
256
- @p = @d.storage_create()
257
-
258
- assert_equal expected_storage_path, @p.path
259
- assert @p.store.empty?
260
-
261
- assert_nil @p.get('key1')
262
- assert_equal 'EMPTY', @p.fetch('key1', 'EMPTY')
263
-
264
- @p.put('key1', '1')
265
- assert_equal({'key1' => '1'}, File.open(expected_storage_path){|f| JSON.parse(f.read) })
266
-
267
- @p.update('key1') do |v|
268
- (v.to_i * 2).to_s
269
- end
270
- assert_equal({'key1' => '2'}, File.open(expected_storage_path){|f| JSON.parse(f.read) })
271
- end
272
-
273
- test 'raises error if it is configured to use on-memory storage' do
274
- assert_raise Fluent::ConfigError.new("Plugin @id or path for <storage> required when 'persistent' is true") do
275
- @d.configure(config_element('ROOT', '', {}, [config_element('storage', '', {'persistent' => 'true'})]))
276
- end
277
- end
278
- end
279
-
280
- sub_test_case 'with various configurations' do
281
- test 'mode and dir_mode controls permissions of stored data' do
282
- omit "NTFS doesn't support UNIX like permissions" if Fluent.windows?
283
-
284
- storage_path = File.join(TMP_DIR, 'dir', 'my_store.json')
285
- storage_conf = {
286
- 'path' => storage_path,
287
- 'mode' => '0600',
288
- 'dir_mode' => '0777',
289
- }
290
- conf = config_element('ROOT', '', {}, [config_element('storage', '', storage_conf)])
291
- @d.configure(conf)
292
- @d.start
293
- @p = @d.storage_create()
294
-
295
- assert_equal storage_path, @p.path
296
- assert @p.store.empty?
297
-
298
- @p.put('key1', '1')
299
- assert_equal '1', @p.get('key1')
300
-
301
- @p.save # stores all data into file
302
-
303
- assert File.exist?(storage_path)
304
- assert_equal 0600, (File.stat(storage_path).mode % 01000)
305
- assert_equal 0777, (File.stat(File.dirname(storage_path)).mode % 01000)
306
- end
307
-
308
- test 'pretty_print controls to write data in files as human-easy-to-read' do
309
- storage_path = File.join(TMP_DIR, 'dir', 'my_store.json')
310
- storage_conf = {
311
- 'path' => storage_path,
312
- 'pretty_print' => 'true',
313
- }
314
- conf = config_element('ROOT', '', {}, [config_element('storage', '', storage_conf)])
315
- @d.configure(conf)
316
- @d.start
317
- @p = @d.storage_create()
318
-
319
- assert_equal storage_path, @p.path
320
- assert @p.store.empty?
321
-
322
- @p.put('key1', '1')
323
- assert_equal '1', @p.get('key1')
324
-
325
- @p.save # stores all data into file
326
-
327
- expected_pp_json = <<JSON.chomp
328
- {
329
- "key1": "1"
330
- }
331
- JSON
332
- assert_equal expected_pp_json, File.read(storage_path)
333
- end
334
- end
335
- end
@@ -1,26 +0,0 @@
1
- require_relative '../helper'
2
- require 'fluent/plugin/string_util'
3
-
4
- class StringUtilTest < Test::Unit::TestCase
5
- def setup
6
- @null_value_pattern = Regexp.new("^(-|null|NULL)$")
7
- end
8
-
9
- sub_test_case 'valid string' do
10
- test 'null string' do
11
- assert_equal Fluent::StringUtil.match_regexp(@null_value_pattern, "null").to_s, "null"
12
- assert_equal Fluent::StringUtil.match_regexp(@null_value_pattern, "NULL").to_s, "NULL"
13
- assert_equal Fluent::StringUtil.match_regexp(@null_value_pattern, "-").to_s, "-"
14
- end
15
-
16
- test 'normal string' do
17
- assert_equal Fluent::StringUtil.match_regexp(@null_value_pattern, "fluentd"), nil
18
- end
19
- end
20
-
21
- sub_test_case 'invalid string' do
22
- test 'normal string' do
23
- assert_equal Fluent::StringUtil.match_regexp(@null_value_pattern, "\xff"), nil
24
- end
25
- end
26
- end
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEpQIBAAKCAQEArbUTk5n5RruIQGhK1T8g/emKonlfWNMSj/J/f/U9NJ14ugIx
3
- yHBMqx4WaTyA4zjT2VJO5tRBe385zlIUf8i+x7Ovt/MgsjiwXyKv7qdsE5KHLq+V
4
- XJfA+s5vAAyzBHY/BA7xxh/QqCI8a/a1OyHyaQ9pFRFXtQBlTH7Fc1qSw5Yg0EXo
5
- fa6YIBQuDjfqa7FRPj+bEWDO5PUqOMzH5XKBUPS9GLHOqia0CnzF2a51TArC0Dl1
6
- oNFa7myVmjBuNtkG88Fkd7YNzGa+sNBJPmuGvFXuU3XPEnrtARO/SG4g9/MQUvfM
7
- I3jFFOJAMmEKd8QXxO5FgIuEnaNOhVRVH/e9wwIDAQABAoIBAQCcYYAWSW/Y9ctb
8
- 8IguIn8ZF77vNkVYOe1kGfQexjErxPiCvKcEw9TB2HxkkUuXQ/m0lBzkQgIRpB/u
9
- VoaN47OdJW70M7UjvVVK0HeCascpd6irpvbYPOZG5MGZUdV4Ftv0U1/l9Y5rTycG
10
- KzxM1+rcGjuH8+z5zjlj/FzV1Jx75pgH2vwE7tBC9hMIefKJVxsnj+1I2BWwT3Ra
11
- tFayaKW80UYvGQeQjMHyWzEAHAAco5EVTNU9q4xkeKubZx/dod8b05S0Oral0SHY
12
- AFzXJCp6k29w0m3saEtVQBTImwNut8scJ4KoryGRp9fj9a/dBb1RHe/6EXZ8kDRe
13
- zhB2/XWBAoGBANpaAPdcIXFyke4DRB07JGin4NU+yzIZy+RwsHme1OIwu9jUYQ1j
14
- SzcrnJ9adkjgHl4z2psXyeSz/lSUGj7ZjcMVaDu49JSYMPP3heXGkHdtlVyB7KFR
15
- OBt1rgNdXYfOLOBg6j7mf5G5fXUIATM8fNw5nDYIivD7U3cl9TdUe3OJAoGBAMuo
16
- e/pmRMEaaDmXuNkDGv/ZoOC4j9tO1fGheSdna9gZWoOyY+MUTFNBQuz/8aw6VsKS
17
- c7RXY0QI6NsgdLD1OGVgH9AXhDqvgfOBXDWdr/DNJa0wDFNaWRrMFeNQLm7Xhxuf
18
- OBQycq6vUiWJ6XTqcdk+xErcWRbsQPsGozCEcHfrAoGBAI+sl2QsMClI/PLDHWeq
19
- ict/Y3aNigCebsYSzFxKgcOP05raLD417sEPplBIovpS1kigECDrJ0KgmSIoDZj7
20
- Z8dM57gcfHrmJZfycB2AaYDcD2K+bui625Nd/LFkFu4MYQUHYDshSiGmDwIZ0UhY
21
- bcQu+DWpq1rj1Mjaph7RLSYZAoGBAMAJNiZt6qT/ZonwA/A1mm7oYmekAJo2I0y+
22
- CwTZ43oYph4Kx19nU3Up05aw3MyfEhJUkF/cCxErKY7+cqouAKiu1DCfDCNePTZE
23
- o5M3BqEUgFNnPCgYyG6ZRIZco/wGpTKplvKMg1EuplIZUhbZvtKv+d3xGtyfl8Jc
24
- huKH75lTAoGAHQ3Sy56zgQEJ3QFrIw4puztf/KXpSgLA+aSDh6Ti4IY7L+CwZmuW
25
- JyVbgF33CwSIKEhacmALs1ZZsDc1ZXov1HWwePxe4/m7smoqZDtrRXQsbRB5COzA
26
- U30iEMW/rwI3WmHhiIWZYje85+VJZqBc5QS8guv4/XrS/FE7C8Suksc=
27
- -----END RSA PRIVATE KEY-----
@@ -1,19 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDLDCCAhSgAwIBAgIIEJHFsHrKBGYwDQYJKoZIhvcNAQELBQAwJjEQMA4GA1UE
3
- ChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE5MDYxOTA1MTM0NVoX
4
- DTE5MDkxODExMTg0NVowJjEQMA4GA1UEChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9j
5
- YWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArbUTk5n5RruI
6
- QGhK1T8g/emKonlfWNMSj/J/f/U9NJ14ugIxyHBMqx4WaTyA4zjT2VJO5tRBe385
7
- zlIUf8i+x7Ovt/MgsjiwXyKv7qdsE5KHLq+VXJfA+s5vAAyzBHY/BA7xxh/QqCI8
8
- a/a1OyHyaQ9pFRFXtQBlTH7Fc1qSw5Yg0EXofa6YIBQuDjfqa7FRPj+bEWDO5PUq
9
- OMzH5XKBUPS9GLHOqia0CnzF2a51TArC0Dl1oNFa7myVmjBuNtkG88Fkd7YNzGa+
10
- sNBJPmuGvFXuU3XPEnrtARO/SG4g9/MQUvfMI3jFFOJAMmEKd8QXxO5FgIuEnaNO
11
- hVRVH/e9wwIDAQABo14wXDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
12
- BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFPLdOVnVWuuB
13
- 7Pnvpgte4BHitzFYMA0GCSqGSIb3DQEBCwUAA4IBAQBp8LAzjWIJapwTBnnivwZk
14
- D6Lr028mZIacbBZKsmmPi0VvDFqCvUAbHN8ytPlRBWnvvkihDkZs1TwcDCXGsWYs
15
- dNNwsYGpk3mQxsHQ9atvy0mQGLDlfaSs/329bfVCw1cPFo9n+MeivSBoE6asdIbH
16
- tOW3kk1XtJZ2qQJJRvexFImZc0z8c2cG0+eR5hQxQd9bLnAczi/8mZ8VzaU/O3UU
17
- OJoVuyp0AA8f2f0f1QDaeH9stWZtJQj3ZX1DWHRE3OmVkoBdlt8EHYGggtvQaLIF
18
- XbHigLHzYztMjmDt4fmRczu/Fu6M4xNro8jLgjiIjqlLBjDZiKrSbOwgyebwFDlv
19
- -----END CERTIFICATE-----
@@ -1,19 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDLDCCAhSgAwIBAgIIEJHFsHrKBGYwDQYJKoZIhvcNAQELBQAwJjEQMA4GA1UE
3
- ChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE5MDYxOTA1MTM0NVoX
4
- DTE5MDkxODExMTg0NVowJjEQMA4GA1UEChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9j
5
- YWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArbUTk5n5RruI
6
- QGhK1T8g/emKonlfWNMSj/J/f/U9NJ14ugIxyHBMqx4WaTyA4zjT2VJO5tRBe385
7
- zlIUf8i+x7Ovt/MgsjiwXyKv7qdsE5KHLq+VXJfA+s5vAAyzBHY/BA7xxh/QqCI8
8
- a/a1OyHyaQ9pFRFXtQBlTH7Fc1qSw5Yg0EXofa6YIBQuDjfqa7FRPj+bEWDO5PUq
9
- OMzH5XKBUPS9GLHOqia0CnzF2a51TArC0Dl1oNFa7myVmjBuNtkG88Fkd7YNzGa+
10
- sNBJPmuGvFXuU3XPEnrtARO/SG4g9/MQUvfMI3jFFOJAMmEKd8QXxO5FgIuEnaNO
11
- hVRVH/e9wwIDAQABo14wXDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
12
- BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFPLdOVnVWuuB
13
- 7Pnvpgte4BHitzFYMA0GCSqGSIb3DQEBCwUAA4IBAQBp8LAzjWIJapwTBnnivwZk
14
- D6Lr028mZIacbBZKsmmPi0VvDFqCvUAbHN8ytPlRBWnvvkihDkZs1TwcDCXGsWYs
15
- dNNwsYGpk3mQxsHQ9atvy0mQGLDlfaSs/329bfVCw1cPFo9n+MeivSBoE6asdIbH
16
- tOW3kk1XtJZ2qQJJRvexFImZc0z8c2cG0+eR5hQxQd9bLnAczi/8mZ8VzaU/O3UU
17
- OJoVuyp0AA8f2f0f1QDaeH9stWZtJQj3ZX1DWHRE3OmVkoBdlt8EHYGggtvQaLIF
18
- XbHigLHzYztMjmDt4fmRczu/Fu6M4xNro8jLgjiIjqlLBjDZiKrSbOwgyebwFDlv
19
- -----END CERTIFICATE-----
@@ -1,19 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDLDCCAhSgAwIBAgIIEJHFsHrKBGYwDQYJKoZIhvcNAQELBQAwJjEQMA4GA1UE
3
- ChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE5MDYxOTA1MTM0NVoX
4
- DTE5MDkxODExMTg0NVowJjEQMA4GA1UEChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9j
5
- YWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArbUTk5n5RruI
6
- QGhK1T8g/emKonlfWNMSj/J/f/U9NJ14ugIxyHBMqx4WaTyA4zjT2VJO5tRBe385
7
- zlIUf8i+x7Ovt/MgsjiwXyKv7qdsE5KHLq+VXJfA+s5vAAyzBHY/BA7xxh/QqCI8
8
- a/a1OyHyaQ9pFRFXtQBlTH7Fc1qSw5Yg0EXofa6YIBQuDjfqa7FRPj+bEWDO5PUq
9
- OMzH5XKBUPS9GLHOqia0CnzF2a51TArC0Dl1oNFa7myVmjBuNtkG88Fkd7YNzGa+
10
- sNBJPmuGvFXuU3XPEnrtARO/SG4g9/MQUvfMI3jFFOJAMmEKd8QXxO5FgIuEnaNO
11
- hVRVH/e9wwIDAQABo14wXDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
12
- BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFPLdOVnVWuuB
13
- 7Pnvpgte4BHitzFYMA0GCSqGSIb3DQEBCwUAA4IBAQBp8LAzjWIJapwTBnnivwZk
14
- D6Lr028mZIacbBZKsmmPi0VvDFqCvUAbHN8ytPlRBWnvvkihDkZs1TwcDCXGsWYs
15
- dNNwsYGpk3mQxsHQ9atvy0mQGLDlfaSs/329bfVCw1cPFo9n+MeivSBoE6asdIbH
16
- tOW3kk1XtJZ2qQJJRvexFImZc0z8c2cG0+eR5hQxQd9bLnAczi/8mZ8VzaU/O3UU
17
- OJoVuyp0AA8f2f0f1QDaeH9stWZtJQj3ZX1DWHRE3OmVkoBdlt8EHYGggtvQaLIF
18
- XbHigLHzYztMjmDt4fmRczu/Fu6M4xNro8jLgjiIjqlLBjDZiKrSbOwgyebwFDlv
19
- -----END CERTIFICATE-----
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEpAIBAAKCAQEA21in8qRqBrfYlRHr1N6eGq3d4CnKe+lTt0sGbab1670s0+h1
3
- lGtjWny6gLSnt5PBY36CUoFB8MtRciVG2zUhB+dAZe4Mst5dzJO6cONT/l/USbCV
4
- rQ/x8m3YzeJNj89fCZ7/7po8CpEfn16BMAd6TMXZZ8O+DCgv3SliEyxpi9CLg2PK
5
- wAV4lwktbGenYadWLFWjv5a+QElFGH/tu5jUDhggoisoQGyZCls2Vmbr6RH+uiy8
6
- js3gxy+5YgbuwkrQtjbfwxe5yEsd6RgzO8oLqlowCwCrn4CNaXFwaZa/vqcWzY4L
7
- qiEWLfmFpFcSZdoWjr1WHsJS/PM3AyJea8nAnQIDAQABAoIBAGkMpaqsmWbMR7rl
8
- EVgqoffPCzMfcK01ivV+xf5f9ulG+aAndaB2aefdUojvfF+MMRNQdGPFKeqDxWbw
9
- eWXkpQQe+ZWXk5darfubSLBl/0UVahs8qgJvX4WmnC3GUzUrsK1v68y/K0A4TrfJ
10
- z/9LpYP9QWjTs0IpQPsfpavfGlFt1TJvPxmomn7D+n0N6zzD3kFlGdeCSYwtPURR
11
- dJ7ifX2vU4E8UtSm7gLrXlmAl1O7bJjFvL3+QlzKDM4M1WJpA9MkmM2icKxdYpew
12
- biRmIiUHdV4soad2Aq58v4q5UgdMqGI8f+fWPO9qgXN7AKbT9NkXr1w/pziOt5rq
13
- /77lbKECgYEA9bmOSA1LfRRclJCaoWWu4PiaXdvMHvsNC9r8NUGuwmiosEMKHFEJ
14
- z8wvzVXprziXAwDTwqkPJmKseNPC8WCq2GfNu7lqJ1V1wHxpzHKhiAWhs7rE7skW
15
- mF2xn2Tocba/L3Nb+K0tXhOZ7daduz94YXFhmRtsutZ9JvFv3G+QmHkCgYEA5IS4
16
- +cOFyha486U9jXyLcPmZXZY9ql4ILuKuQ5pHA7CBO/zU2behuwcainW6P0WzbhKs
17
- CP8xR5W/otqcaHZxy6hg9/nUFVVZIR/0jgKyxCqJA1W49jt23gykmU6q0vj7haZJ
18
- QMhcAbleHBC7YvYoMTpTMe7tZP4YsFNysBn76EUCgYBqtFAn07YjM7NcREsRqSE+
19
- ylXmSisijOxGaKq6ybIE9APEvufmEf7LwKRFa3hVwaI6CKLsVhOhHJo+wd5WiR7H
20
- aJQ7X7HMMN04YA5lXKXudluYu5MHCkWIlq8qQ1x4/N2a0mJu42ze/G4MjPTjuhUh
21
- Y2X5YaJepAOm5JMpyzykKQKBgQDj9eaU+dBgLdSo8UD7ALAVrlio/HRdnNoq82SF
22
- +cQ30P7KucgXvFDxQv/d+d0mu0BoYOYPP4uIbsEyE0SODQIt+LVrCmTgNzjni3op
23
- pFVyzT/K/Nu7fsxwbEpSySAtv8UhqSVQI89sxN81vhdAfHDR0u4lVMSqx7QXSdeS
24
- Bwm9xQKBgQDSeoHoXbmiqRBss9Em69JPwWRZOc9eLns+fFJ1x/WkhY4bnnVXTYkZ
25
- LzRN4ICq18xHy8egbl93uxDcjkMxi3Wj64QZcygI9gWmDBW2hdMpEArR/grsM/FH
26
- DYu9KUMhm5T1KtXtV3izSVCprthdGjbKSbmR6hGw3n9Z1uP6V1rnXQ==
27
- -----END RSA PRIVATE KEY-----
@@ -1,20 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDPTCCAiWgAwIBAgILAJJ76Kpa6DYtsncwDQYJKoZIhvcNAQELBQAwUzELMAkG
3
- A1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MR8w
4
- HQYDVQQDDBZjYS50ZXN0aW5nLmZsdWVudGQub3JnMCAXDTcwMDEwMTAwMDAwMFoY
5
- DzIxMTgxMDI3MDgwNjU3WjBTMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExFjAU
6
- BgNVBAcMDU1vdW50YWluIFZpZXcxHzAdBgNVBAMMFmNhLnRlc3RpbmcuZmx1ZW50
7
- ZC5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDbWKfypGoGt9iV
8
- EevU3p4ard3gKcp76VO3SwZtpvXrvSzT6HWUa2NafLqAtKe3k8FjfoJSgUHwy1Fy
9
- JUbbNSEH50Bl7gyy3l3Mk7pw41P+X9RJsJWtD/HybdjN4k2Pz18Jnv/umjwKkR+f
10
- XoEwB3pMxdlnw74MKC/dKWITLGmL0IuDY8rABXiXCS1sZ6dhp1YsVaO/lr5ASUUY
11
- f+27mNQOGCCiKyhAbJkKWzZWZuvpEf66LLyOzeDHL7liBu7CStC2Nt/DF7nISx3p
12
- GDM7yguqWjALAKufgI1pcXBplr++pxbNjguqIRYt+YWkVxJl2haOvVYewlL88zcD
13
- Il5rycCdAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEB
14
- AGPhEAc+vb9PHyet9t5gKJTZF7S4x207hKZ0zLqCQCLM7VjrTVBh/TUFT+saiPsv
15
- 4k2TYSZKInYXh6tkSzdGlRyzk166hF1eOTOae/92Da5PEQMT0AC+SDRDHXrNTyD8
16
- ZxP2xOl0j+FNeKQDdNL+PCU56PYehY40dYZ/EjRyu4VjKaSCMHcVx7eMTyxU3wtB
17
- HbOa8UJdUXEjn4h7icz4aca22aqLedXNaDr6YX+mo25t1jsTO7cEMfr4Ce7GvxdA
18
- msey/b5jnsKcpL7/2uYz5+owD39JZQBRQt+1YAzIU+BNiz8yzdXJO4aQpGWTflIB
19
- jO31o7x4loEvaBTQbX3iP2g=
20
- -----END CERTIFICATE-----