embulk 0.7.0-java

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 (393) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +18 -0
  5. data/COPYING +14 -0
  6. data/Gemfile +2 -0
  7. data/Gemfile.lock +31 -0
  8. data/README.md +206 -0
  9. data/Rakefile +26 -0
  10. data/appveyor.yml +20 -0
  11. data/bin/embulk +106 -0
  12. data/build.gradle +338 -0
  13. data/embulk-cli/build.gradle +6 -0
  14. data/embulk-cli/src/main/java/org/embulk/cli/Main.java +22 -0
  15. data/embulk-cli/src/main/sh/selfrun.sh +158 -0
  16. data/embulk-cli/src/test/java/org/embulk/cli/DummyMain.java +23 -0
  17. data/embulk-cli/src/test/java/org/embulk/cli/SelfrunTest.java +281 -0
  18. data/embulk-core/build.gradle +59 -0
  19. data/embulk-core/src/main/java/org/embulk/EmbulkEmbed.java +315 -0
  20. data/embulk-core/src/main/java/org/embulk/EmbulkService.java +76 -0
  21. data/embulk-core/src/main/java/org/embulk/command/PreviewPrinter.java +84 -0
  22. data/embulk-core/src/main/java/org/embulk/command/TablePreviewPrinter.java +107 -0
  23. data/embulk-core/src/main/java/org/embulk/command/VerticalPreviewPrinter.java +47 -0
  24. data/embulk-core/src/main/java/org/embulk/config/CommitReport.java +33 -0
  25. data/embulk-core/src/main/java/org/embulk/config/Config.java +15 -0
  26. data/embulk-core/src/main/java/org/embulk/config/ConfigDefault.java +15 -0
  27. data/embulk-core/src/main/java/org/embulk/config/ConfigDiff.java +29 -0
  28. data/embulk-core/src/main/java/org/embulk/config/ConfigException.java +20 -0
  29. data/embulk-core/src/main/java/org/embulk/config/ConfigInject.java +14 -0
  30. data/embulk-core/src/main/java/org/embulk/config/ConfigLoader.java +141 -0
  31. data/embulk-core/src/main/java/org/embulk/config/ConfigSource.java +31 -0
  32. data/embulk-core/src/main/java/org/embulk/config/DataSource.java +39 -0
  33. data/embulk-core/src/main/java/org/embulk/config/DataSourceImpl.java +231 -0
  34. data/embulk-core/src/main/java/org/embulk/config/DataSourceSerDe.java +84 -0
  35. data/embulk-core/src/main/java/org/embulk/config/GenericTypeReference.java +20 -0
  36. data/embulk-core/src/main/java/org/embulk/config/ModelManager.java +123 -0
  37. data/embulk-core/src/main/java/org/embulk/config/Task.java +10 -0
  38. data/embulk-core/src/main/java/org/embulk/config/TaskInvocationHandler.java +180 -0
  39. data/embulk-core/src/main/java/org/embulk/config/TaskReport.java +29 -0
  40. data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +345 -0
  41. data/embulk-core/src/main/java/org/embulk/config/TaskSource.java +31 -0
  42. data/embulk-core/src/main/java/org/embulk/config/TaskValidationException.java +38 -0
  43. data/embulk-core/src/main/java/org/embulk/config/TaskValidator.java +24 -0
  44. data/embulk-core/src/main/java/org/embulk/exec/BulkLoader.java +652 -0
  45. data/embulk-core/src/main/java/org/embulk/exec/ExecModule.java +52 -0
  46. data/embulk-core/src/main/java/org/embulk/exec/ExecutionInterruptedException.java +10 -0
  47. data/embulk-core/src/main/java/org/embulk/exec/ExecutionResult.java +26 -0
  48. data/embulk-core/src/main/java/org/embulk/exec/ExtensionServiceLoaderModule.java +43 -0
  49. data/embulk-core/src/main/java/org/embulk/exec/ForGuess.java +16 -0
  50. data/embulk-core/src/main/java/org/embulk/exec/ForSystemConfig.java +16 -0
  51. data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +373 -0
  52. data/embulk-core/src/main/java/org/embulk/exec/LocalExecutorPlugin.java +129 -0
  53. data/embulk-core/src/main/java/org/embulk/exec/LocalThreadExecutor.java +34 -0
  54. data/embulk-core/src/main/java/org/embulk/exec/LoggerProvider.java +60 -0
  55. data/embulk-core/src/main/java/org/embulk/exec/NoSampleException.java +10 -0
  56. data/embulk-core/src/main/java/org/embulk/exec/PartialExecutionException.java +18 -0
  57. data/embulk-core/src/main/java/org/embulk/exec/PooledBufferAllocator.java +77 -0
  58. data/embulk-core/src/main/java/org/embulk/exec/PreviewExecutor.java +183 -0
  59. data/embulk-core/src/main/java/org/embulk/exec/PreviewResult.java +27 -0
  60. data/embulk-core/src/main/java/org/embulk/exec/PreviewedNoticeError.java +17 -0
  61. data/embulk-core/src/main/java/org/embulk/exec/ResumeState.java +100 -0
  62. data/embulk-core/src/main/java/org/embulk/exec/SamplingParserPlugin.java +136 -0
  63. data/embulk-core/src/main/java/org/embulk/exec/SetCurrentThreadName.java +19 -0
  64. data/embulk-core/src/main/java/org/embulk/exec/SystemConfigModule.java +24 -0
  65. data/embulk-core/src/main/java/org/embulk/exec/TempFileAllocator.java +35 -0
  66. data/embulk-core/src/main/java/org/embulk/guice/Bootstrap.java +157 -0
  67. data/embulk-core/src/main/java/org/embulk/guice/CloseableInjector.java +22 -0
  68. data/embulk-core/src/main/java/org/embulk/guice/InjectorProxy.java +145 -0
  69. data/embulk-core/src/main/java/org/embulk/guice/LifeCycleInjector.java +26 -0
  70. data/embulk-core/src/main/java/org/embulk/guice/LifeCycleInjectorProxy.java +61 -0
  71. data/embulk-core/src/main/java/org/embulk/guice/LifeCycleManager.java +187 -0
  72. data/embulk-core/src/main/java/org/embulk/guice/LifeCycleMethods.java +89 -0
  73. data/embulk-core/src/main/java/org/embulk/guice/LifeCycleMethodsMap.java +38 -0
  74. data/embulk-core/src/main/java/org/embulk/guice/LifeCycleModule.java +97 -0
  75. data/embulk-core/src/main/java/org/embulk/jruby/JRubyPluginSource.java +72 -0
  76. data/embulk-core/src/main/java/org/embulk/jruby/JRubyScriptingModule.java +119 -0
  77. data/embulk-core/src/main/java/org/embulk/plugin/BuiltinPluginSourceModule.java +17 -0
  78. data/embulk-core/src/main/java/org/embulk/plugin/InjectedPluginSource.java +96 -0
  79. data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoader.java +168 -0
  80. data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderFactory.java +9 -0
  81. data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderModule.java +71 -0
  82. data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +78 -0
  83. data/embulk-core/src/main/java/org/embulk/plugin/PluginSource.java +6 -0
  84. data/embulk-core/src/main/java/org/embulk/plugin/PluginSourceNotMatchException.java +19 -0
  85. data/embulk-core/src/main/java/org/embulk/plugin/PluginType.java +47 -0
  86. data/embulk-core/src/main/java/org/embulk/plugin/compat/InputPluginWrapper.java +102 -0
  87. data/embulk-core/src/main/java/org/embulk/plugin/compat/PluginWrappers.java +30 -0
  88. data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileInputWrapper.java +96 -0
  89. data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileOutputWrapper.java +102 -0
  90. data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalPageOutputWrapper.java +95 -0
  91. data/embulk-core/src/main/java/org/embulk/spi/Buffer.java +148 -0
  92. data/embulk-core/src/main/java/org/embulk/spi/BufferAllocator.java +8 -0
  93. data/embulk-core/src/main/java/org/embulk/spi/Column.java +92 -0
  94. data/embulk-core/src/main/java/org/embulk/spi/ColumnConfig.java +112 -0
  95. data/embulk-core/src/main/java/org/embulk/spi/ColumnVisitor.java +14 -0
  96. data/embulk-core/src/main/java/org/embulk/spi/DecoderPlugin.java +16 -0
  97. data/embulk-core/src/main/java/org/embulk/spi/EncoderPlugin.java +16 -0
  98. data/embulk-core/src/main/java/org/embulk/spi/Exec.java +113 -0
  99. data/embulk-core/src/main/java/org/embulk/spi/ExecAction.java +6 -0
  100. data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +217 -0
  101. data/embulk-core/src/main/java/org/embulk/spi/ExecutorPlugin.java +19 -0
  102. data/embulk-core/src/main/java/org/embulk/spi/Extension.java +44 -0
  103. data/embulk-core/src/main/java/org/embulk/spi/FileInput.java +11 -0
  104. data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +30 -0
  105. data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +162 -0
  106. data/embulk-core/src/main/java/org/embulk/spi/FileOutput.java +13 -0
  107. data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +28 -0
  108. data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +202 -0
  109. data/embulk-core/src/main/java/org/embulk/spi/FilterPlugin.java +18 -0
  110. data/embulk-core/src/main/java/org/embulk/spi/FormatterPlugin.java +18 -0
  111. data/embulk-core/src/main/java/org/embulk/spi/GuessPlugin.java +9 -0
  112. data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +33 -0
  113. data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +29 -0
  114. data/embulk-core/src/main/java/org/embulk/spi/Page.java +51 -0
  115. data/embulk-core/src/main/java/org/embulk/spi/PageBuilder.java +338 -0
  116. data/embulk-core/src/main/java/org/embulk/spi/PageFormat.java +47 -0
  117. data/embulk-core/src/main/java/org/embulk/spi/PageOutput.java +11 -0
  118. data/embulk-core/src/main/java/org/embulk/spi/PageReader.java +226 -0
  119. data/embulk-core/src/main/java/org/embulk/spi/ParserPlugin.java +17 -0
  120. data/embulk-core/src/main/java/org/embulk/spi/ProcessState.java +10 -0
  121. data/embulk-core/src/main/java/org/embulk/spi/ProcessTask.java +117 -0
  122. data/embulk-core/src/main/java/org/embulk/spi/Schema.java +134 -0
  123. data/embulk-core/src/main/java/org/embulk/spi/SchemaConfig.java +93 -0
  124. data/embulk-core/src/main/java/org/embulk/spi/SchemaConfigException.java +22 -0
  125. data/embulk-core/src/main/java/org/embulk/spi/TaskState.java +81 -0
  126. data/embulk-core/src/main/java/org/embulk/spi/TempFileException.java +19 -0
  127. data/embulk-core/src/main/java/org/embulk/spi/TempFileSpace.java +87 -0
  128. data/embulk-core/src/main/java/org/embulk/spi/Transactional.java +10 -0
  129. data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileInput.java +17 -0
  130. data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileOutput.java +19 -0
  131. data/embulk-core/src/main/java/org/embulk/spi/TransactionalPageOutput.java +17 -0
  132. data/embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java +55 -0
  133. data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelper.java +8 -0
  134. data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelperFactory.java +6 -0
  135. data/embulk-core/src/main/java/org/embulk/spi/time/Timestamp.java +159 -0
  136. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormat.java +100 -0
  137. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormatter.java +97 -0
  138. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParseException.java +10 -0
  139. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParser.java +104 -0
  140. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampSerDe.java +49 -0
  141. data/embulk-core/src/main/java/org/embulk/spi/type/AbstractType.java +58 -0
  142. data/embulk-core/src/main/java/org/embulk/spi/type/BooleanType.java +12 -0
  143. data/embulk-core/src/main/java/org/embulk/spi/type/DoubleType.java +12 -0
  144. data/embulk-core/src/main/java/org/embulk/spi/type/LongType.java +12 -0
  145. data/embulk-core/src/main/java/org/embulk/spi/type/StringType.java +12 -0
  146. data/embulk-core/src/main/java/org/embulk/spi/type/TimestampType.java +41 -0
  147. data/embulk-core/src/main/java/org/embulk/spi/type/Type.java +15 -0
  148. data/embulk-core/src/main/java/org/embulk/spi/type/TypeDeserializer.java +44 -0
  149. data/embulk-core/src/main/java/org/embulk/spi/type/Types.java +14 -0
  150. data/embulk-core/src/main/java/org/embulk/spi/unit/ByteSize.java +156 -0
  151. data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFile.java +106 -0
  152. data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFileSerDe.java +113 -0
  153. data/embulk-core/src/main/java/org/embulk/spi/unit/ToString.java +54 -0
  154. data/embulk-core/src/main/java/org/embulk/spi/unit/ToStringMap.java +34 -0
  155. data/embulk-core/src/main/java/org/embulk/spi/util/CharsetSerDe.java +55 -0
  156. data/embulk-core/src/main/java/org/embulk/spi/util/Decoders.java +81 -0
  157. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnNotFoundException.java +10 -0
  158. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetter.java +18 -0
  159. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetterFactory.java +94 -0
  160. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicPageBuilder.java +161 -0
  161. data/embulk-core/src/main/java/org/embulk/spi/util/Encoders.java +81 -0
  162. data/embulk-core/src/main/java/org/embulk/spi/util/Executors.java +95 -0
  163. data/embulk-core/src/main/java/org/embulk/spi/util/FileInputInputStream.java +111 -0
  164. data/embulk-core/src/main/java/org/embulk/spi/util/FileOutputOutputStream.java +119 -0
  165. data/embulk-core/src/main/java/org/embulk/spi/util/Filters.java +100 -0
  166. data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamFileInput.java +190 -0
  167. data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamTransactionalFileInput.java +25 -0
  168. data/embulk-core/src/main/java/org/embulk/spi/util/Inputs.java +65 -0
  169. data/embulk-core/src/main/java/org/embulk/spi/util/LineDecoder.java +118 -0
  170. data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +123 -0
  171. data/embulk-core/src/main/java/org/embulk/spi/util/ListFileInput.java +52 -0
  172. data/embulk-core/src/main/java/org/embulk/spi/util/Newline.java +38 -0
  173. data/embulk-core/src/main/java/org/embulk/spi/util/OutputStreamFileOutput.java +88 -0
  174. data/embulk-core/src/main/java/org/embulk/spi/util/PagePrinter.java +102 -0
  175. data/embulk-core/src/main/java/org/embulk/spi/util/Pages.java +139 -0
  176. data/embulk-core/src/main/java/org/embulk/spi/util/ResumableInputStream.java +128 -0
  177. data/embulk-core/src/main/java/org/embulk/spi/util/RetryExecutor.java +130 -0
  178. data/embulk-core/src/main/java/org/embulk/spi/util/Timestamps.java +53 -0
  179. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/AbstractDynamicColumnSetter.java +79 -0
  180. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/BooleanColumnSetter.java +64 -0
  181. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DefaultValueSetter.java +18 -0
  182. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DoubleColumnSetter.java +61 -0
  183. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/LongColumnSetter.java +69 -0
  184. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/NullDefaultValueSetter.java +34 -0
  185. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/SkipColumnSetter.java +52 -0
  186. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/StringColumnSetter.java +56 -0
  187. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/TimestampColumnSetter.java +64 -0
  188. data/embulk-core/src/main/resources/embulk/logback-color.xml +72 -0
  189. data/embulk-core/src/main/resources/embulk/logback-console.xml +14 -0
  190. data/embulk-core/src/main/resources/embulk/logback-file.xml +25 -0
  191. data/embulk-core/src/main/resources/embulk/parent_first_packages.properties +70 -0
  192. data/embulk-core/src/main/resources/embulk/parent_first_resources.properties +28 -0
  193. data/embulk-core/src/test/java/org/embulk/EmbulkTestRuntime.java +114 -0
  194. data/embulk-core/src/test/java/org/embulk/GuiceBinder.java +72 -0
  195. data/embulk-core/src/test/java/org/embulk/RandomManager.java +53 -0
  196. data/embulk-core/src/test/java/org/embulk/TestPluginSourceModule.java +23 -0
  197. data/embulk-core/src/test/java/org/embulk/TestUtilityModule.java +17 -0
  198. data/embulk-core/src/test/java/org/embulk/config/TestConfigLoader.java +66 -0
  199. data/embulk-core/src/test/java/org/embulk/config/TestConfigSource.java +114 -0
  200. data/embulk-core/src/test/java/org/embulk/config/TestTaskSource.java +70 -0
  201. data/embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java +58 -0
  202. data/embulk-core/src/test/java/org/embulk/plugin/TestPluginType.java +18 -0
  203. data/embulk-core/src/test/java/org/embulk/spi/MockFileOutput.java +63 -0
  204. data/embulk-core/src/test/java/org/embulk/spi/MockFormatterPlugin.java +101 -0
  205. data/embulk-core/src/test/java/org/embulk/spi/MockParserPlugin.java +73 -0
  206. data/embulk-core/src/test/java/org/embulk/spi/PageTestUtils.java +57 -0
  207. data/embulk-core/src/test/java/org/embulk/spi/TestBuffer.java +24 -0
  208. data/embulk-core/src/test/java/org/embulk/spi/TestFileInputInputStream.java +89 -0
  209. data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +196 -0
  210. data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +207 -0
  211. data/embulk-core/src/test/java/org/embulk/spi/TestInputStreamFileInput.java +188 -0
  212. data/embulk-core/src/test/java/org/embulk/spi/TestPageBuilderReader.java +319 -0
  213. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestamp.java +116 -0
  214. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParser.java +63 -0
  215. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParserDeprecated.java +67 -0
  216. data/embulk-core/src/test/java/org/embulk/spi/type/TestTypeSerDe.java +45 -0
  217. data/embulk-core/src/test/java/org/embulk/spi/unit/TestByteSize.java +79 -0
  218. data/embulk-core/src/test/java/org/embulk/spi/util/TestLineDecoder.java +132 -0
  219. data/embulk-core/src/test/java/org/embulk/spi/util/TestLineEncoder.java +123 -0
  220. data/embulk-docs/Makefile +178 -0
  221. data/embulk-docs/build.gradle +32 -0
  222. data/embulk-docs/make.bat +243 -0
  223. data/embulk-docs/push-gh-pages.sh +49 -0
  224. data/embulk-docs/src/_static/embulk-architecture.png +0 -0
  225. data/embulk-docs/src/_static/embulk-logo.png +0 -0
  226. data/embulk-docs/src/_static/embulk-logo.svg +133 -0
  227. data/embulk-docs/src/built-in.rst +440 -0
  228. data/embulk-docs/src/conf.py +260 -0
  229. data/embulk-docs/src/customization.rst +184 -0
  230. data/embulk-docs/src/index.rst +84 -0
  231. data/embulk-docs/src/recipe.rst +8 -0
  232. data/embulk-docs/src/recipe/scheduled-csv-load-to-elasticsearch-kibana4.rst +153 -0
  233. data/embulk-docs/src/release.rst +57 -0
  234. data/embulk-docs/src/release/release-0.1.0.rst +8 -0
  235. data/embulk-docs/src/release/release-0.2.0.rst +16 -0
  236. data/embulk-docs/src/release/release-0.2.1.rst +19 -0
  237. data/embulk-docs/src/release/release-0.3.0.rst +34 -0
  238. data/embulk-docs/src/release/release-0.3.1.rst +11 -0
  239. data/embulk-docs/src/release/release-0.3.2.rst +15 -0
  240. data/embulk-docs/src/release/release-0.4.0.rst +74 -0
  241. data/embulk-docs/src/release/release-0.4.1.rst +18 -0
  242. data/embulk-docs/src/release/release-0.4.10.rst +17 -0
  243. data/embulk-docs/src/release/release-0.4.2.rst +18 -0
  244. data/embulk-docs/src/release/release-0.4.3.rst +34 -0
  245. data/embulk-docs/src/release/release-0.4.4.rst +39 -0
  246. data/embulk-docs/src/release/release-0.4.5.rst +24 -0
  247. data/embulk-docs/src/release/release-0.4.6.rst +30 -0
  248. data/embulk-docs/src/release/release-0.4.7.rst +16 -0
  249. data/embulk-docs/src/release/release-0.4.8.rst +15 -0
  250. data/embulk-docs/src/release/release-0.4.9.rst +23 -0
  251. data/embulk-docs/src/release/release-0.5.0.rst +89 -0
  252. data/embulk-docs/src/release/release-0.5.1.rst +13 -0
  253. data/embulk-docs/src/release/release-0.5.2.rst +30 -0
  254. data/embulk-docs/src/release/release-0.5.3.rst +22 -0
  255. data/embulk-docs/src/release/release-0.5.4.rst +24 -0
  256. data/embulk-docs/src/release/release-0.5.5.rst +18 -0
  257. data/embulk-docs/src/release/release-0.6.0.rst +34 -0
  258. data/embulk-docs/src/release/release-0.6.1.rst +11 -0
  259. data/embulk-docs/src/release/release-0.6.10.rst +15 -0
  260. data/embulk-docs/src/release/release-0.6.11.rst +19 -0
  261. data/embulk-docs/src/release/release-0.6.12.rst +31 -0
  262. data/embulk-docs/src/release/release-0.6.13.rst +23 -0
  263. data/embulk-docs/src/release/release-0.6.14.rst +47 -0
  264. data/embulk-docs/src/release/release-0.6.15.rst +26 -0
  265. data/embulk-docs/src/release/release-0.6.16.rst +26 -0
  266. data/embulk-docs/src/release/release-0.6.17.rst +39 -0
  267. data/embulk-docs/src/release/release-0.6.18.rst +14 -0
  268. data/embulk-docs/src/release/release-0.6.19.rst +18 -0
  269. data/embulk-docs/src/release/release-0.6.2.rst +17 -0
  270. data/embulk-docs/src/release/release-0.6.20.rst +19 -0
  271. data/embulk-docs/src/release/release-0.6.21.rst +20 -0
  272. data/embulk-docs/src/release/release-0.6.22.rst +26 -0
  273. data/embulk-docs/src/release/release-0.6.23.rst +17 -0
  274. data/embulk-docs/src/release/release-0.6.24.rst +13 -0
  275. data/embulk-docs/src/release/release-0.6.25.rst +12 -0
  276. data/embulk-docs/src/release/release-0.6.3.rst +23 -0
  277. data/embulk-docs/src/release/release-0.6.4.rst +13 -0
  278. data/embulk-docs/src/release/release-0.6.5.rst +17 -0
  279. data/embulk-docs/src/release/release-0.6.6.rst +17 -0
  280. data/embulk-docs/src/release/release-0.6.7.rst +17 -0
  281. data/embulk-docs/src/release/release-0.6.8.rst +24 -0
  282. data/embulk-docs/src/release/release-0.6.9.rst +24 -0
  283. data/embulk-docs/src/release/release-0.7.0.rst +96 -0
  284. data/embulk-standards/build.gradle +5 -0
  285. data/embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java +284 -0
  286. data/embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java +379 -0
  287. data/embulk-standards/src/main/java/org/embulk/standards/CsvTokenizer.java +411 -0
  288. data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +55 -0
  289. data/embulk-standards/src/main/java/org/embulk/standards/GzipFileEncoderPlugin.java +71 -0
  290. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +203 -0
  291. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +148 -0
  292. data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +59 -0
  293. data/embulk-standards/src/main/java/org/embulk/standards/RenameFilterPlugin.java +56 -0
  294. data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginExtension.java +16 -0
  295. data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginModule.java +53 -0
  296. data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +85 -0
  297. data/embulk-standards/src/main/resources/META-INF/services/org.embulk.spi.Extension +1 -0
  298. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvFormatterPlugin.java +312 -0
  299. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvParserPlugin.java +75 -0
  300. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvTokenizer.java +360 -0
  301. data/embulk-standards/src/test/java/org/embulk/standards/TestRenameFilterPlugin.java +88 -0
  302. data/embulk.gemspec +39 -0
  303. data/gradle/wrapper/gradle-wrapper.jar +0 -0
  304. data/gradle/wrapper/gradle-wrapper.properties +6 -0
  305. data/gradlew +164 -0
  306. data/gradlew.bat +90 -0
  307. data/lib/embulk.rb +72 -0
  308. data/lib/embulk/buffer.rb +22 -0
  309. data/lib/embulk/column.rb +70 -0
  310. data/lib/embulk/command/embulk_bundle.rb +56 -0
  311. data/lib/embulk/command/embulk_example.rb +32 -0
  312. data/lib/embulk/command/embulk_generate_bin.rb +62 -0
  313. data/lib/embulk/command/embulk_main.rb +2 -0
  314. data/lib/embulk/command/embulk_migrate_plugin.rb +170 -0
  315. data/lib/embulk/command/embulk_new_plugin.rb +124 -0
  316. data/lib/embulk/command/embulk_run.rb +470 -0
  317. data/lib/embulk/command/embulk_selfupdate.rb +84 -0
  318. data/lib/embulk/data/bundle/.bundle/config +3 -0
  319. data/lib/embulk/data/bundle/.ruby-version +1 -0
  320. data/lib/embulk/data/bundle/Gemfile +26 -0
  321. data/lib/embulk/data/bundle/embulk/filter/example.rb +42 -0
  322. data/lib/embulk/data/bundle/embulk/input/example.rb +54 -0
  323. data/lib/embulk/data/bundle/embulk/output/example.rb +58 -0
  324. data/lib/embulk/data/new/LICENSE.txt +21 -0
  325. data/lib/embulk/data/new/README.md.erb +111 -0
  326. data/lib/embulk/data/new/gitignore.erb +13 -0
  327. data/lib/embulk/data/new/java/build.gradle.erb +73 -0
  328. data/lib/embulk/data/new/java/decoder.java.erb +84 -0
  329. data/lib/embulk/data/new/java/encoder.java.erb +86 -0
  330. data/lib/embulk/data/new/java/file_input.java.erb +143 -0
  331. data/lib/embulk/data/new/java/file_output.java.erb +93 -0
  332. data/lib/embulk/data/new/java/filter.java.erb +56 -0
  333. data/lib/embulk/data/new/java/formatter.java.erb +54 -0
  334. data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.jar +0 -0
  335. data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.properties +6 -0
  336. data/lib/embulk/data/new/java/gradlew +164 -0
  337. data/lib/embulk/data/new/java/gradlew.bat +90 -0
  338. data/lib/embulk/data/new/java/input.java.erb +87 -0
  339. data/lib/embulk/data/new/java/output.java.erb +77 -0
  340. data/lib/embulk/data/new/java/parser.java.erb +60 -0
  341. data/lib/embulk/data/new/java/plugin_loader.rb.erb +3 -0
  342. data/lib/embulk/data/new/java/test.java.erb +5 -0
  343. data/lib/embulk/data/new/ruby/.ruby-version +1 -0
  344. data/lib/embulk/data/new/ruby/Gemfile +2 -0
  345. data/lib/embulk/data/new/ruby/Rakefile +3 -0
  346. data/lib/embulk/data/new/ruby/decoder_guess.rb.erb +25 -0
  347. data/lib/embulk/data/new/ruby/filter.rb.erb +41 -0
  348. data/lib/embulk/data/new/ruby/formatter.rb.erb +49 -0
  349. data/lib/embulk/data/new/ruby/gemspec.erb +20 -0
  350. data/lib/embulk/data/new/ruby/input.rb.erb +59 -0
  351. data/lib/embulk/data/new/ruby/output.rb.erb +61 -0
  352. data/lib/embulk/data/new/ruby/parser.rb.erb +44 -0
  353. data/lib/embulk/data/new/ruby/parser_guess.rb.erb +65 -0
  354. data/lib/embulk/data/package_data.rb +50 -0
  355. data/lib/embulk/data_source.rb +220 -0
  356. data/lib/embulk/decoder_plugin.rb +27 -0
  357. data/lib/embulk/encoder_plugin.rb +27 -0
  358. data/lib/embulk/error.rb +8 -0
  359. data/lib/embulk/executor_plugin.rb +23 -0
  360. data/lib/embulk/file_input.rb +87 -0
  361. data/lib/embulk/file_input_plugin.rb +27 -0
  362. data/lib/embulk/file_output.rb +56 -0
  363. data/lib/embulk/file_output_plugin.rb +27 -0
  364. data/lib/embulk/filter_plugin.rb +105 -0
  365. data/lib/embulk/formatter_plugin.rb +105 -0
  366. data/lib/embulk/guess/charset.rb +44 -0
  367. data/lib/embulk/guess/csv.rb +327 -0
  368. data/lib/embulk/guess/gzip.rb +18 -0
  369. data/lib/embulk/guess/newline.rb +22 -0
  370. data/lib/embulk/guess/schema_guess.rb +118 -0
  371. data/lib/embulk/guess/time_format_guess.rb +394 -0
  372. data/lib/embulk/guess_plugin.rb +129 -0
  373. data/lib/embulk/input_plugin.rb +121 -0
  374. data/lib/embulk/java/bootstrap.rb +24 -0
  375. data/lib/embulk/java/imports.rb +69 -0
  376. data/lib/embulk/java/time_helper.rb +79 -0
  377. data/lib/embulk/java_plugin.rb +90 -0
  378. data/lib/embulk/logger.rb +154 -0
  379. data/lib/embulk/output_plugin.rb +150 -0
  380. data/lib/embulk/page.rb +30 -0
  381. data/lib/embulk/page_builder.rb +76 -0
  382. data/lib/embulk/parser_plugin.rb +78 -0
  383. data/lib/embulk/plugin.rb +239 -0
  384. data/lib/embulk/plugin_registry.rb +96 -0
  385. data/lib/embulk/runner.rb +184 -0
  386. data/lib/embulk/schema.rb +103 -0
  387. data/lib/embulk/version.rb +3 -0
  388. data/settings.gradle +6 -0
  389. data/test/guess/test_schema_guess.rb +11 -0
  390. data/test/guess/test_time_format_guess.rb +133 -0
  391. data/test/helper.rb +21 -0
  392. data/test/run-test.rb +14 -0
  393. metadata +566 -0
@@ -0,0 +1,116 @@
1
+ package org.embulk.spi.time;
2
+
3
+ import static org.junit.Assert.assertEquals;
4
+ import static org.junit.Assert.assertFalse;
5
+
6
+ import org.junit.Test;
7
+
8
+ public class TestTimestamp
9
+ {
10
+ @Test
11
+ public void testEqualsToTimestamp()
12
+ {
13
+ assertEqualsMethods(Timestamp.ofEpochSecond(0), Timestamp.ofEpochSecond(0));
14
+ assertEqualsMethods(Timestamp.ofEpochSecond(10), Timestamp.ofEpochSecond(10));
15
+ assertEqualsMethods(Timestamp.ofEpochSecond(10, 2), Timestamp.ofEpochSecond(10, 2));
16
+ }
17
+
18
+ private void assertEqualsMethods(Timestamp t1, Timestamp t2)
19
+ {
20
+ assertEquals(t1, t2);
21
+ assertEquals(t1.hashCode(), t2.hashCode());
22
+ assertEquals(0, t1.compareTo(t2));
23
+ }
24
+
25
+ @Test
26
+ public void testNotEqualsToTimestamp()
27
+ {
28
+ assertFalse(Timestamp.ofEpochSecond(0).equals(Timestamp.ofEpochSecond(1)));
29
+ assertFalse(Timestamp.ofEpochSecond(10).equals(Timestamp.ofEpochSecond(10, 2)));
30
+ assertFalse(Timestamp.ofEpochSecond(10, 2).equals(Timestamp.ofEpochSecond(20, 2)));
31
+ }
32
+
33
+ @Test
34
+ public void testEqualsToNull()
35
+ {
36
+ assertFalse(Timestamp.ofEpochSecond(0).equals(null));
37
+ assertFalse(Timestamp.ofEpochSecond(1, 2).equals(null));
38
+ }
39
+
40
+ @Test
41
+ public void testEqualsOtherClass()
42
+ {
43
+ assertFalse(Timestamp.ofEpochSecond(0).equals(new Object()));
44
+ assertFalse(Timestamp.ofEpochSecond(1, 2).equals("other"));
45
+ }
46
+
47
+ @Test
48
+ public void testAdjustMillisToNanos()
49
+ {
50
+ Timestamp t = Timestamp.ofEpochMilli(3); // 3 msec = 3_000 usec == 3_000_000 nsec
51
+ assertEquals(0L, t.getEpochSecond());
52
+ assertEquals(3_000_000, t.getNano());
53
+ }
54
+
55
+ @Test
56
+ public void testAdjustMillisToSeconds()
57
+ {
58
+ Timestamp t = Timestamp.ofEpochMilli(3_000); // 3_000 msec = 3 sec
59
+ assertEquals(3L, t.getEpochSecond());
60
+ assertEquals(0, t.getNano());
61
+ }
62
+
63
+ @Test
64
+ public void testAdjustNano()
65
+ {
66
+ Timestamp t = Timestamp.ofEpochSecond(0, 1_000_000_000); // 1_000_000_000 nsec = 1_000_000 usec = 1_000 msec = 1 sec
67
+ assertEquals(1L, t.getEpochSecond());
68
+ assertEquals(0, t.getNano());
69
+ }
70
+
71
+ @Test
72
+ public void testCompareTo()
73
+ {
74
+ assertEquals(-1, Timestamp.ofEpochSecond(3).compareTo(Timestamp.ofEpochSecond(4)));
75
+ assertEquals(-1, Timestamp.ofEpochSecond(3).compareTo(Timestamp.ofEpochSecond(3, 4)));
76
+ assertEquals( 1, Timestamp.ofEpochSecond(4).compareTo(Timestamp.ofEpochSecond(3)));
77
+ assertEquals( 1, Timestamp.ofEpochSecond(3, 4).compareTo(Timestamp.ofEpochSecond(3)));
78
+ }
79
+
80
+ @Test
81
+ public void testToString()
82
+ {
83
+ assertEquals("1970-01-01 00:00:00 UTC", Timestamp.ofEpochSecond(0).toString());
84
+ assertEquals("2015-01-19 07:36:10 UTC", Timestamp.ofEpochSecond(1421652970).toString());
85
+ assertEquals("2015-01-19 07:36:10.100 UTC", Timestamp.ofEpochSecond(1421652970, 100*1000*1000).toString());
86
+ assertEquals("2015-01-19 07:36:10.120 UTC", Timestamp.ofEpochSecond(1421652970, 120*1000*1000).toString());
87
+ assertEquals("2015-01-19 07:36:10.123 UTC", Timestamp.ofEpochSecond(1421652970, 123*1000*1000).toString());
88
+ assertEquals("2015-01-19 07:36:10.123400 UTC", Timestamp.ofEpochSecond(1421652970, 123400*1000).toString());
89
+ assertEquals("2015-01-19 07:36:10.123450 UTC", Timestamp.ofEpochSecond(1421652970, 123450*1000).toString());
90
+ assertEquals("2015-01-19 07:36:10.123456 UTC", Timestamp.ofEpochSecond(1421652970, 123456*1000).toString());
91
+ assertEquals("2015-01-19 07:36:10.123456700 UTC", Timestamp.ofEpochSecond(1421652970, 123456700).toString());
92
+ assertEquals("2015-01-19 07:36:10.123456780 UTC", Timestamp.ofEpochSecond(1421652970, 123456780).toString());
93
+ assertEquals("2015-01-19 07:36:10.123456789 UTC", Timestamp.ofEpochSecond(1421652970, 123456789).toString());
94
+ }
95
+
96
+ @Test
97
+ public void testFromString()
98
+ {
99
+ checkToStringFromString(Timestamp.ofEpochSecond(0));
100
+ checkToStringFromString(Timestamp.ofEpochSecond(1421652970));
101
+ checkToStringFromString(Timestamp.ofEpochSecond(1421652970, 100*1000*1000));
102
+ checkToStringFromString(Timestamp.ofEpochSecond(1421652970, 120*1000*1000));
103
+ checkToStringFromString(Timestamp.ofEpochSecond(1421652970, 123*1000*1000));
104
+ checkToStringFromString(Timestamp.ofEpochSecond(1421652970, 123400*1000));
105
+ checkToStringFromString(Timestamp.ofEpochSecond(1421652970, 123450*1000));
106
+ checkToStringFromString(Timestamp.ofEpochSecond(1421652970, 123456*1000));
107
+ checkToStringFromString(Timestamp.ofEpochSecond(1421652970, 123456700));
108
+ checkToStringFromString(Timestamp.ofEpochSecond(1421652970, 123456780));
109
+ checkToStringFromString(Timestamp.ofEpochSecond(1421652970, 123456789));
110
+ }
111
+
112
+ private void checkToStringFromString(Timestamp timestamp)
113
+ {
114
+ assertEquals(timestamp, Timestamp.fromString(timestamp.toString()));
115
+ }
116
+ }
@@ -0,0 +1,63 @@
1
+ package org.embulk.spi.time;
2
+
3
+ import org.junit.Rule;
4
+ import org.junit.Before;
5
+ import org.junit.Test;
6
+ import com.google.common.base.Optional;
7
+ import static org.junit.Assert.assertEquals;
8
+ import org.embulk.config.Task;
9
+ import org.embulk.config.Config;
10
+ import org.embulk.config.ConfigSource;
11
+ import org.embulk.spi.Exec;
12
+ import org.embulk.EmbulkTestRuntime;
13
+
14
+ public class TestTimestampFormatterParser
15
+ {
16
+ @Rule
17
+ public EmbulkTestRuntime runtime = new EmbulkTestRuntime();
18
+
19
+ private interface FormatterTestTask
20
+ extends Task, TimestampFormatter.Task
21
+ { }
22
+
23
+ private interface ParserTestTask
24
+ extends Task, TimestampParser.Task
25
+ { }
26
+
27
+ @Test
28
+ public void testSimpleFormat() throws Exception
29
+ {
30
+ ConfigSource config = Exec.newConfigSource()
31
+ .set("default_timestamp_format", "%Y-%m-%d %H:%M:%S.%9N %Z");
32
+ FormatterTestTask task = config.loadConfig(FormatterTestTask.class);
33
+
34
+ TimestampFormatter formatter = new TimestampFormatter(task, Optional.<TimestampFormatter.TimestampColumnOption>absent());
35
+ assertEquals("2014-11-19 02:46:29.123456000 UTC", formatter.format(Timestamp.ofEpochSecond(1416365189, 123456*1000)));
36
+ }
37
+
38
+ @Test
39
+ public void testSimpleParse() throws Exception
40
+ {
41
+ ConfigSource config = Exec.newConfigSource()
42
+ .set("default_timestamp_format", "%Y-%m-%d %H:%M:%S %Z");
43
+ ParserTestTask task = config.loadConfig(ParserTestTask.class);
44
+
45
+ TimestampParser parser = new TimestampParser(task);
46
+ assertEquals(Timestamp.ofEpochSecond(1416365189, 0), parser.parse("2014-11-19 02:46:29 UTC"));
47
+ }
48
+
49
+ @Test
50
+ public void testUnixtimeFormat() throws Exception
51
+ {
52
+ ConfigSource config = Exec.newConfigSource()
53
+ .set("default_timestamp_format", "%s");
54
+
55
+ FormatterTestTask ftask = config.loadConfig(FormatterTestTask.class);
56
+ TimestampFormatter formatter = new TimestampFormatter(ftask, Optional.<TimestampFormatter.TimestampColumnOption>absent());
57
+ assertEquals("1416365189", formatter.format(Timestamp.ofEpochSecond(1416365189)));
58
+
59
+ ParserTestTask ptask = config.loadConfig(ParserTestTask.class);
60
+ TimestampParser parser = new TimestampParser(ptask);
61
+ assertEquals(Timestamp.ofEpochSecond(1416365189), parser.parse("1416365189"));
62
+ }
63
+ }
@@ -0,0 +1,67 @@
1
+ package org.embulk.spi.time;
2
+
3
+ import org.junit.Rule;
4
+ import org.junit.Before;
5
+ import org.junit.Test;
6
+ import static org.junit.Assert.assertEquals;
7
+ import org.embulk.config.Config;
8
+ import org.embulk.config.ConfigSource;
9
+ import org.embulk.spi.Exec;
10
+ import org.embulk.EmbulkTestRuntime;
11
+
12
+ public class TestTimestampFormatterParserDeprecated
13
+ {
14
+ @Rule
15
+ public EmbulkTestRuntime runtime = new EmbulkTestRuntime();
16
+
17
+ private interface FormatterTestTask
18
+ extends TimestampFormatter.FormatterTask
19
+ {
20
+ @Config("time_format")
21
+ public TimestampFormat getTimeFormat();
22
+ }
23
+
24
+ private interface ParserTestTask
25
+ extends TimestampParser.ParserTask
26
+ {
27
+ @Config("time_format")
28
+ public TimestampFormat getTimeFormat();
29
+ }
30
+
31
+ @Test
32
+ public void testSimpleFormat() throws Exception
33
+ {
34
+ ConfigSource config = Exec.newConfigSource()
35
+ .set("time_format", "%Y-%m-%d %H:%M:%S.%6N %Z");
36
+ FormatterTestTask task = config.loadConfig(FormatterTestTask.class);
37
+
38
+ TimestampFormatter formatter = task.getTimeFormat().newFormatter(task);
39
+ assertEquals("2014-11-19 02:46:29.123456 UTC", formatter.format(Timestamp.ofEpochSecond(1416365189, 123456*1000)));
40
+ }
41
+
42
+ @Test
43
+ public void testSimpleParse() throws Exception
44
+ {
45
+ ConfigSource config = Exec.newConfigSource()
46
+ .set("time_format", "%Y-%m-%d %H:%M:%S.%N %Z");
47
+ ParserTestTask task = config.loadConfig(ParserTestTask.class);
48
+
49
+ TimestampParser parser = task.getTimeFormat().newParser(task);
50
+ assertEquals(Timestamp.ofEpochSecond(1416365189, 123456*1000), parser.parse("2014-11-19 02:46:29.123456 UTC"));
51
+ }
52
+
53
+ @Test
54
+ public void testUnixtimeFormat() throws Exception
55
+ {
56
+ ConfigSource config = Exec.newConfigSource()
57
+ .set("time_format", "%s");
58
+
59
+ FormatterTestTask ftask = config.loadConfig(FormatterTestTask.class);
60
+ TimestampFormatter formatter = ftask.getTimeFormat().newFormatter(ftask);
61
+ assertEquals("1416365189", formatter.format(Timestamp.ofEpochSecond(1416365189)));
62
+
63
+ ParserTestTask ptask = config.loadConfig(ParserTestTask.class);
64
+ TimestampParser parser = ptask.getTimeFormat().newParser(ptask);
65
+ assertEquals(Timestamp.ofEpochSecond(1416365189), parser.parse("1416365189"));
66
+ }
67
+ }
@@ -0,0 +1,45 @@
1
+ package org.embulk.spi.type;
2
+
3
+ import org.junit.Rule;
4
+ import org.junit.Before;
5
+ import org.junit.Test;
6
+ import static org.junit.Assert.assertEquals;
7
+ import static org.junit.Assert.assertTrue;
8
+ import com.google.inject.Inject;
9
+ import com.fasterxml.jackson.annotation.JsonCreator;
10
+ import com.fasterxml.jackson.annotation.JsonProperty;
11
+ import org.embulk.EmbulkTestRuntime;
12
+
13
+ public class TestTypeSerDe
14
+ {
15
+ @Rule
16
+ public EmbulkTestRuntime runtime = new EmbulkTestRuntime();
17
+
18
+ private static class HasType
19
+ {
20
+ private Type type;
21
+ // TODO test TimestampType
22
+
23
+ @JsonCreator
24
+ public HasType(
25
+ @JsonProperty("type") Type type)
26
+ {
27
+ this.type = type;
28
+ }
29
+
30
+ @JsonProperty("type")
31
+ public Type getType()
32
+ {
33
+ return type;
34
+ }
35
+ }
36
+
37
+ @Test
38
+ public void testGetType()
39
+ {
40
+ HasType type = new HasType(StringType.STRING);
41
+ String json = runtime.getModelManager().writeObject(type);
42
+ HasType decoded = runtime.getModelManager().readObject(HasType.class, json);
43
+ assertTrue(StringType.STRING == decoded.getType());
44
+ }
45
+ }
@@ -0,0 +1,79 @@
1
+ package org.embulk.spi.unit;
2
+
3
+ import static org.junit.Assert.assertEquals;
4
+ import static org.junit.Assert.fail;
5
+ import org.junit.Test;
6
+
7
+ public class TestByteSize
8
+ {
9
+ @Test
10
+ public void testUnitPatterns()
11
+ {
12
+ assertByteSize(42L, "42");
13
+ assertByteSize(42L, "42B");
14
+ assertByteSize(42L*(1L << 10), "42KB");
15
+ assertByteSize(42L*(1L << 20), "42MB");
16
+ assertByteSize(42L*(1L << 30), "42GB");
17
+ assertByteSize(42L*(1L << 40), "42TB");
18
+ assertByteSize(42L*(1L << 50), "42PB");
19
+ assertByteSize(42L, "42 B");
20
+ assertByteSize(42L*(1L << 10), "42 KB");
21
+ }
22
+
23
+ @Test
24
+ public void testUnknownUnits()
25
+ {
26
+ assertInvalidByteSize("42XB");
27
+ assertInvalidByteSize("42 XB");
28
+ }
29
+
30
+ @Test
31
+ public void testInvalidPatterns()
32
+ {
33
+ assertInvalidByteSize(" 42");
34
+ assertInvalidByteSize("42 B");
35
+ assertInvalidByteSize("42 B ");
36
+ assertInvalidByteSize("42B ");
37
+ assertInvalidByteSize("42 KB");
38
+ assertInvalidByteSize("42 KB ");
39
+ assertInvalidByteSize("42KB ");
40
+ }
41
+
42
+ @Test
43
+ public void testInvalidValues()
44
+ {
45
+ assertInvalidByteSize("9223372036854775KB");
46
+ }
47
+
48
+ @Test
49
+ public void testToString()
50
+ {
51
+ assertByteSizeString("42B", "42 B");
52
+ assertByteSizeString("42KB", "42 KB");
53
+ assertByteSizeString("42MB", "42 MB");
54
+ assertByteSizeString("42GB", "42 GB");
55
+ assertByteSizeString("42TB", "42 TB");
56
+ assertByteSizeString("42PB", "42 PB");
57
+ assertByteSizeString("42.20KB", "42.2 KB");
58
+ assertByteSizeString("42.33KB", "42.33KB");
59
+ }
60
+
61
+ private static void assertByteSize(long bytes, String string)
62
+ {
63
+ assertEquals(bytes, ByteSize.parseByteSize(string).getBytes());
64
+ }
65
+
66
+ private static void assertByteSizeString(String expected, String string)
67
+ {
68
+ assertEquals(expected, ByteSize.parseByteSize(string).toString());
69
+ }
70
+
71
+ private static void assertInvalidByteSize(String string)
72
+ {
73
+ try {
74
+ ByteSize.parseByteSize(string);
75
+ fail();
76
+ } catch (IllegalArgumentException ex) {
77
+ }
78
+ }
79
+ }
@@ -0,0 +1,132 @@
1
+ package org.embulk.spi.util;
2
+
3
+ import java.util.List;
4
+ import java.util.ArrayList;
5
+ import java.nio.ByteBuffer;
6
+ import java.nio.charset.Charset;
7
+ import java.nio.charset.UnsupportedCharsetException;
8
+ import com.google.common.collect.ImmutableList;
9
+ import org.junit.Rule;
10
+ import org.junit.Before;
11
+ import org.junit.Test;
12
+ import static org.junit.Assert.assertEquals;
13
+ import org.embulk.config.ConfigSource;
14
+ import org.embulk.spi.Exec;
15
+ import org.embulk.spi.Buffer;
16
+ import org.embulk.spi.util.ListFileInput;
17
+ import org.embulk.EmbulkTestRuntime;
18
+
19
+ public class TestLineDecoder
20
+ {
21
+ @Rule
22
+ public EmbulkTestRuntime runtime = new EmbulkTestRuntime();
23
+
24
+ @Test
25
+ public void testDefaultValues()
26
+ {
27
+ ConfigSource config = Exec.newConfigSource();
28
+ LineDecoder.DecoderTask task = config.loadConfig(LineDecoder.DecoderTask.class);
29
+ assertEquals(Charset.forName("utf-8"), task.getCharset());
30
+ assertEquals(Newline.CRLF, task.getNewline());
31
+ }
32
+
33
+ @Test
34
+ public void testLoadConfig()
35
+ {
36
+ ConfigSource config = Exec.newConfigSource()
37
+ .set("charset", "utf-16")
38
+ .set("newline", "CRLF");
39
+ LineDecoder.DecoderTask task = config.loadConfig(LineDecoder.DecoderTask.class);
40
+ assertEquals(Charset.forName("utf-16"), task.getCharset());
41
+ assertEquals(Newline.CRLF, task.getNewline());
42
+ }
43
+
44
+ private static LineDecoder.DecoderTask getExampleConfig()
45
+ {
46
+ ConfigSource config = Exec.newConfigSource()
47
+ .set("charset", "utf-8")
48
+ .set("newline", "LF");
49
+ return config.loadConfig(LineDecoder.DecoderTask.class);
50
+ }
51
+
52
+ private static LineDecoder newDecoder(Charset charset, Newline newline, List<Buffer> buffers)
53
+ {
54
+ ListFileInput input = new ListFileInput(ImmutableList.of(buffers));
55
+ return new LineDecoder(input, getExampleConfig());
56
+ }
57
+
58
+ private static List<String> doDecode(Charset charset, Newline newline, List<Buffer> buffers)
59
+ {
60
+ ImmutableList.Builder<String> builder = ImmutableList.builder();
61
+ LineDecoder decoder = newDecoder(charset, newline, buffers);
62
+ decoder.nextFile();
63
+ while (true) {
64
+ String line = decoder.poll();
65
+ if (line == null) {
66
+ break;
67
+ }
68
+ builder.add(line);
69
+ }
70
+ return builder.build();
71
+ }
72
+
73
+ private static List<Buffer> bufferList(String charsetName, String... sources) throws UnsupportedCharsetException
74
+ {
75
+ Charset charset = Charset.forName(charsetName);
76
+
77
+ List<Buffer> buffers = new ArrayList<Buffer>();
78
+ for (String source : sources) {
79
+ ByteBuffer buffer = charset.encode(source);
80
+ buffers.add(Buffer.wrap(buffer.array(), 0, buffer.limit()));
81
+ }
82
+
83
+ return buffers;
84
+ }
85
+
86
+ @Test
87
+ public void testDecodeBasicAscii() throws Exception
88
+ {
89
+ List<String> decoded = doDecode(
90
+ Charset.forName("utf-8"), Newline.LF,
91
+ bufferList("utf-8", "test1\ntest2\ntest3\n"));
92
+ assertEquals(ImmutableList.of("test1", "test2", "test3"), decoded);
93
+ }
94
+
95
+ @Test
96
+ public void testDecodeBasicAsciiCRLF() throws Exception
97
+ {
98
+ List<String> decoded = doDecode(
99
+ Charset.forName("utf-8"), Newline.CRLF,
100
+ bufferList("utf-8", "test1\r\ntest2\r\ntest3\r\n"));
101
+ assertEquals(ImmutableList.of("test1", "test2", "test3"), decoded);
102
+ }
103
+
104
+ @Test
105
+ public void testDecodeBasicAsciiTail() throws Exception
106
+ {
107
+ List<String> decoded = doDecode(
108
+ Charset.forName("utf-8"), Newline.LF,
109
+ bufferList("utf-8", "test1"));
110
+ assertEquals(ImmutableList.of("test1"), decoded);
111
+ }
112
+
113
+ @Test
114
+ public void testDecodeChunksLF() throws Exception
115
+ {
116
+ List<String> decoded = doDecode(
117
+ Charset.forName("utf-8"), Newline.LF,
118
+ bufferList("utf-8", "t", "1", "\n", "t", "2"));
119
+ assertEquals(ImmutableList.of("t1", "t2"), decoded);
120
+ }
121
+
122
+ @Test
123
+ public void testDecodeChunksCRLF() throws Exception
124
+ {
125
+ List<String> decoded = doDecode(
126
+ Charset.forName("utf-8"), Newline.CRLF,
127
+ bufferList("utf-8", "t", "1", "\r\n", "t", "2", "\r", "\n", "t3"));
128
+ assertEquals(ImmutableList.of("t1", "t2", "t3"), decoded);
129
+ }
130
+
131
+ // TODO test multibytes
132
+ }