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.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.ruby-version +1 -0
- data/.travis.yml +18 -0
- data/COPYING +14 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +31 -0
- data/README.md +206 -0
- data/Rakefile +26 -0
- data/appveyor.yml +20 -0
- data/bin/embulk +106 -0
- data/build.gradle +338 -0
- data/embulk-cli/build.gradle +6 -0
- data/embulk-cli/src/main/java/org/embulk/cli/Main.java +22 -0
- data/embulk-cli/src/main/sh/selfrun.sh +158 -0
- data/embulk-cli/src/test/java/org/embulk/cli/DummyMain.java +23 -0
- data/embulk-cli/src/test/java/org/embulk/cli/SelfrunTest.java +281 -0
- data/embulk-core/build.gradle +59 -0
- data/embulk-core/src/main/java/org/embulk/EmbulkEmbed.java +315 -0
- data/embulk-core/src/main/java/org/embulk/EmbulkService.java +76 -0
- data/embulk-core/src/main/java/org/embulk/command/PreviewPrinter.java +84 -0
- data/embulk-core/src/main/java/org/embulk/command/TablePreviewPrinter.java +107 -0
- data/embulk-core/src/main/java/org/embulk/command/VerticalPreviewPrinter.java +47 -0
- data/embulk-core/src/main/java/org/embulk/config/CommitReport.java +33 -0
- data/embulk-core/src/main/java/org/embulk/config/Config.java +15 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigDefault.java +15 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigDiff.java +29 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigException.java +20 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigInject.java +14 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigLoader.java +141 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigSource.java +31 -0
- data/embulk-core/src/main/java/org/embulk/config/DataSource.java +39 -0
- data/embulk-core/src/main/java/org/embulk/config/DataSourceImpl.java +231 -0
- data/embulk-core/src/main/java/org/embulk/config/DataSourceSerDe.java +84 -0
- data/embulk-core/src/main/java/org/embulk/config/GenericTypeReference.java +20 -0
- data/embulk-core/src/main/java/org/embulk/config/ModelManager.java +123 -0
- data/embulk-core/src/main/java/org/embulk/config/Task.java +10 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskInvocationHandler.java +180 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskReport.java +29 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +345 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskSource.java +31 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskValidationException.java +38 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskValidator.java +24 -0
- data/embulk-core/src/main/java/org/embulk/exec/BulkLoader.java +652 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExecModule.java +52 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExecutionInterruptedException.java +10 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExecutionResult.java +26 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExtensionServiceLoaderModule.java +43 -0
- data/embulk-core/src/main/java/org/embulk/exec/ForGuess.java +16 -0
- data/embulk-core/src/main/java/org/embulk/exec/ForSystemConfig.java +16 -0
- data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +373 -0
- data/embulk-core/src/main/java/org/embulk/exec/LocalExecutorPlugin.java +129 -0
- data/embulk-core/src/main/java/org/embulk/exec/LocalThreadExecutor.java +34 -0
- data/embulk-core/src/main/java/org/embulk/exec/LoggerProvider.java +60 -0
- data/embulk-core/src/main/java/org/embulk/exec/NoSampleException.java +10 -0
- data/embulk-core/src/main/java/org/embulk/exec/PartialExecutionException.java +18 -0
- data/embulk-core/src/main/java/org/embulk/exec/PooledBufferAllocator.java +77 -0
- data/embulk-core/src/main/java/org/embulk/exec/PreviewExecutor.java +183 -0
- data/embulk-core/src/main/java/org/embulk/exec/PreviewResult.java +27 -0
- data/embulk-core/src/main/java/org/embulk/exec/PreviewedNoticeError.java +17 -0
- data/embulk-core/src/main/java/org/embulk/exec/ResumeState.java +100 -0
- data/embulk-core/src/main/java/org/embulk/exec/SamplingParserPlugin.java +136 -0
- data/embulk-core/src/main/java/org/embulk/exec/SetCurrentThreadName.java +19 -0
- data/embulk-core/src/main/java/org/embulk/exec/SystemConfigModule.java +24 -0
- data/embulk-core/src/main/java/org/embulk/exec/TempFileAllocator.java +35 -0
- data/embulk-core/src/main/java/org/embulk/guice/Bootstrap.java +157 -0
- data/embulk-core/src/main/java/org/embulk/guice/CloseableInjector.java +22 -0
- data/embulk-core/src/main/java/org/embulk/guice/InjectorProxy.java +145 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleInjector.java +26 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleInjectorProxy.java +61 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleManager.java +187 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleMethods.java +89 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleMethodsMap.java +38 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleModule.java +97 -0
- data/embulk-core/src/main/java/org/embulk/jruby/JRubyPluginSource.java +72 -0
- data/embulk-core/src/main/java/org/embulk/jruby/JRubyScriptingModule.java +119 -0
- data/embulk-core/src/main/java/org/embulk/plugin/BuiltinPluginSourceModule.java +17 -0
- data/embulk-core/src/main/java/org/embulk/plugin/InjectedPluginSource.java +96 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoader.java +168 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderFactory.java +9 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderModule.java +71 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +78 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginSource.java +6 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginSourceNotMatchException.java +19 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginType.java +47 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/InputPluginWrapper.java +102 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/PluginWrappers.java +30 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileInputWrapper.java +96 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileOutputWrapper.java +102 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalPageOutputWrapper.java +95 -0
- data/embulk-core/src/main/java/org/embulk/spi/Buffer.java +148 -0
- data/embulk-core/src/main/java/org/embulk/spi/BufferAllocator.java +8 -0
- data/embulk-core/src/main/java/org/embulk/spi/Column.java +92 -0
- data/embulk-core/src/main/java/org/embulk/spi/ColumnConfig.java +112 -0
- data/embulk-core/src/main/java/org/embulk/spi/ColumnVisitor.java +14 -0
- data/embulk-core/src/main/java/org/embulk/spi/DecoderPlugin.java +16 -0
- data/embulk-core/src/main/java/org/embulk/spi/EncoderPlugin.java +16 -0
- data/embulk-core/src/main/java/org/embulk/spi/Exec.java +113 -0
- data/embulk-core/src/main/java/org/embulk/spi/ExecAction.java +6 -0
- data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +217 -0
- data/embulk-core/src/main/java/org/embulk/spi/ExecutorPlugin.java +19 -0
- data/embulk-core/src/main/java/org/embulk/spi/Extension.java +44 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileInput.java +11 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +30 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +162 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileOutput.java +13 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +28 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +202 -0
- data/embulk-core/src/main/java/org/embulk/spi/FilterPlugin.java +18 -0
- data/embulk-core/src/main/java/org/embulk/spi/FormatterPlugin.java +18 -0
- data/embulk-core/src/main/java/org/embulk/spi/GuessPlugin.java +9 -0
- data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +33 -0
- data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +29 -0
- data/embulk-core/src/main/java/org/embulk/spi/Page.java +51 -0
- data/embulk-core/src/main/java/org/embulk/spi/PageBuilder.java +338 -0
- data/embulk-core/src/main/java/org/embulk/spi/PageFormat.java +47 -0
- data/embulk-core/src/main/java/org/embulk/spi/PageOutput.java +11 -0
- data/embulk-core/src/main/java/org/embulk/spi/PageReader.java +226 -0
- data/embulk-core/src/main/java/org/embulk/spi/ParserPlugin.java +17 -0
- data/embulk-core/src/main/java/org/embulk/spi/ProcessState.java +10 -0
- data/embulk-core/src/main/java/org/embulk/spi/ProcessTask.java +117 -0
- data/embulk-core/src/main/java/org/embulk/spi/Schema.java +134 -0
- data/embulk-core/src/main/java/org/embulk/spi/SchemaConfig.java +93 -0
- data/embulk-core/src/main/java/org/embulk/spi/SchemaConfigException.java +22 -0
- data/embulk-core/src/main/java/org/embulk/spi/TaskState.java +81 -0
- data/embulk-core/src/main/java/org/embulk/spi/TempFileException.java +19 -0
- data/embulk-core/src/main/java/org/embulk/spi/TempFileSpace.java +87 -0
- data/embulk-core/src/main/java/org/embulk/spi/Transactional.java +10 -0
- data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileInput.java +17 -0
- data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileOutput.java +19 -0
- data/embulk-core/src/main/java/org/embulk/spi/TransactionalPageOutput.java +17 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java +55 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelper.java +8 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelperFactory.java +6 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/Timestamp.java +159 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormat.java +100 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormatter.java +97 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParseException.java +10 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParser.java +104 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampSerDe.java +49 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/AbstractType.java +58 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/BooleanType.java +12 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/DoubleType.java +12 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/LongType.java +12 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/StringType.java +12 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/TimestampType.java +41 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/Type.java +15 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/TypeDeserializer.java +44 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/Types.java +14 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/ByteSize.java +156 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFile.java +106 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFileSerDe.java +113 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/ToString.java +54 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/ToStringMap.java +34 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/CharsetSerDe.java +55 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Decoders.java +81 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnNotFoundException.java +10 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetter.java +18 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetterFactory.java +94 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicPageBuilder.java +161 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Encoders.java +81 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Executors.java +95 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/FileInputInputStream.java +111 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/FileOutputOutputStream.java +119 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Filters.java +100 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamFileInput.java +190 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamTransactionalFileInput.java +25 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Inputs.java +65 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/LineDecoder.java +118 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +123 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/ListFileInput.java +52 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Newline.java +38 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/OutputStreamFileOutput.java +88 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/PagePrinter.java +102 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Pages.java +139 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/ResumableInputStream.java +128 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/RetryExecutor.java +130 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Timestamps.java +53 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/AbstractDynamicColumnSetter.java +79 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/BooleanColumnSetter.java +64 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DefaultValueSetter.java +18 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DoubleColumnSetter.java +61 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/LongColumnSetter.java +69 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/NullDefaultValueSetter.java +34 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/SkipColumnSetter.java +52 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/StringColumnSetter.java +56 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/TimestampColumnSetter.java +64 -0
- data/embulk-core/src/main/resources/embulk/logback-color.xml +72 -0
- data/embulk-core/src/main/resources/embulk/logback-console.xml +14 -0
- data/embulk-core/src/main/resources/embulk/logback-file.xml +25 -0
- data/embulk-core/src/main/resources/embulk/parent_first_packages.properties +70 -0
- data/embulk-core/src/main/resources/embulk/parent_first_resources.properties +28 -0
- data/embulk-core/src/test/java/org/embulk/EmbulkTestRuntime.java +114 -0
- data/embulk-core/src/test/java/org/embulk/GuiceBinder.java +72 -0
- data/embulk-core/src/test/java/org/embulk/RandomManager.java +53 -0
- data/embulk-core/src/test/java/org/embulk/TestPluginSourceModule.java +23 -0
- data/embulk-core/src/test/java/org/embulk/TestUtilityModule.java +17 -0
- data/embulk-core/src/test/java/org/embulk/config/TestConfigLoader.java +66 -0
- data/embulk-core/src/test/java/org/embulk/config/TestConfigSource.java +114 -0
- data/embulk-core/src/test/java/org/embulk/config/TestTaskSource.java +70 -0
- data/embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java +58 -0
- data/embulk-core/src/test/java/org/embulk/plugin/TestPluginType.java +18 -0
- data/embulk-core/src/test/java/org/embulk/spi/MockFileOutput.java +63 -0
- data/embulk-core/src/test/java/org/embulk/spi/MockFormatterPlugin.java +101 -0
- data/embulk-core/src/test/java/org/embulk/spi/MockParserPlugin.java +73 -0
- data/embulk-core/src/test/java/org/embulk/spi/PageTestUtils.java +57 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestBuffer.java +24 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestFileInputInputStream.java +89 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +196 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +207 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestInputStreamFileInput.java +188 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestPageBuilderReader.java +319 -0
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestamp.java +116 -0
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParser.java +63 -0
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParserDeprecated.java +67 -0
- data/embulk-core/src/test/java/org/embulk/spi/type/TestTypeSerDe.java +45 -0
- data/embulk-core/src/test/java/org/embulk/spi/unit/TestByteSize.java +79 -0
- data/embulk-core/src/test/java/org/embulk/spi/util/TestLineDecoder.java +132 -0
- data/embulk-core/src/test/java/org/embulk/spi/util/TestLineEncoder.java +123 -0
- data/embulk-docs/Makefile +178 -0
- data/embulk-docs/build.gradle +32 -0
- data/embulk-docs/make.bat +243 -0
- data/embulk-docs/push-gh-pages.sh +49 -0
- data/embulk-docs/src/_static/embulk-architecture.png +0 -0
- data/embulk-docs/src/_static/embulk-logo.png +0 -0
- data/embulk-docs/src/_static/embulk-logo.svg +133 -0
- data/embulk-docs/src/built-in.rst +440 -0
- data/embulk-docs/src/conf.py +260 -0
- data/embulk-docs/src/customization.rst +184 -0
- data/embulk-docs/src/index.rst +84 -0
- data/embulk-docs/src/recipe.rst +8 -0
- data/embulk-docs/src/recipe/scheduled-csv-load-to-elasticsearch-kibana4.rst +153 -0
- data/embulk-docs/src/release.rst +57 -0
- data/embulk-docs/src/release/release-0.1.0.rst +8 -0
- data/embulk-docs/src/release/release-0.2.0.rst +16 -0
- data/embulk-docs/src/release/release-0.2.1.rst +19 -0
- data/embulk-docs/src/release/release-0.3.0.rst +34 -0
- data/embulk-docs/src/release/release-0.3.1.rst +11 -0
- data/embulk-docs/src/release/release-0.3.2.rst +15 -0
- data/embulk-docs/src/release/release-0.4.0.rst +74 -0
- data/embulk-docs/src/release/release-0.4.1.rst +18 -0
- data/embulk-docs/src/release/release-0.4.10.rst +17 -0
- data/embulk-docs/src/release/release-0.4.2.rst +18 -0
- data/embulk-docs/src/release/release-0.4.3.rst +34 -0
- data/embulk-docs/src/release/release-0.4.4.rst +39 -0
- data/embulk-docs/src/release/release-0.4.5.rst +24 -0
- data/embulk-docs/src/release/release-0.4.6.rst +30 -0
- data/embulk-docs/src/release/release-0.4.7.rst +16 -0
- data/embulk-docs/src/release/release-0.4.8.rst +15 -0
- data/embulk-docs/src/release/release-0.4.9.rst +23 -0
- data/embulk-docs/src/release/release-0.5.0.rst +89 -0
- data/embulk-docs/src/release/release-0.5.1.rst +13 -0
- data/embulk-docs/src/release/release-0.5.2.rst +30 -0
- data/embulk-docs/src/release/release-0.5.3.rst +22 -0
- data/embulk-docs/src/release/release-0.5.4.rst +24 -0
- data/embulk-docs/src/release/release-0.5.5.rst +18 -0
- data/embulk-docs/src/release/release-0.6.0.rst +34 -0
- data/embulk-docs/src/release/release-0.6.1.rst +11 -0
- data/embulk-docs/src/release/release-0.6.10.rst +15 -0
- data/embulk-docs/src/release/release-0.6.11.rst +19 -0
- data/embulk-docs/src/release/release-0.6.12.rst +31 -0
- data/embulk-docs/src/release/release-0.6.13.rst +23 -0
- data/embulk-docs/src/release/release-0.6.14.rst +47 -0
- data/embulk-docs/src/release/release-0.6.15.rst +26 -0
- data/embulk-docs/src/release/release-0.6.16.rst +26 -0
- data/embulk-docs/src/release/release-0.6.17.rst +39 -0
- data/embulk-docs/src/release/release-0.6.18.rst +14 -0
- data/embulk-docs/src/release/release-0.6.19.rst +18 -0
- data/embulk-docs/src/release/release-0.6.2.rst +17 -0
- data/embulk-docs/src/release/release-0.6.20.rst +19 -0
- data/embulk-docs/src/release/release-0.6.21.rst +20 -0
- data/embulk-docs/src/release/release-0.6.22.rst +26 -0
- data/embulk-docs/src/release/release-0.6.23.rst +17 -0
- data/embulk-docs/src/release/release-0.6.24.rst +13 -0
- data/embulk-docs/src/release/release-0.6.25.rst +12 -0
- data/embulk-docs/src/release/release-0.6.3.rst +23 -0
- data/embulk-docs/src/release/release-0.6.4.rst +13 -0
- data/embulk-docs/src/release/release-0.6.5.rst +17 -0
- data/embulk-docs/src/release/release-0.6.6.rst +17 -0
- data/embulk-docs/src/release/release-0.6.7.rst +17 -0
- data/embulk-docs/src/release/release-0.6.8.rst +24 -0
- data/embulk-docs/src/release/release-0.6.9.rst +24 -0
- data/embulk-docs/src/release/release-0.7.0.rst +96 -0
- data/embulk-standards/build.gradle +5 -0
- data/embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java +284 -0
- data/embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java +379 -0
- data/embulk-standards/src/main/java/org/embulk/standards/CsvTokenizer.java +411 -0
- data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +55 -0
- data/embulk-standards/src/main/java/org/embulk/standards/GzipFileEncoderPlugin.java +71 -0
- data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +203 -0
- data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +148 -0
- data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +59 -0
- data/embulk-standards/src/main/java/org/embulk/standards/RenameFilterPlugin.java +56 -0
- data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginExtension.java +16 -0
- data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginModule.java +53 -0
- data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +85 -0
- data/embulk-standards/src/main/resources/META-INF/services/org.embulk.spi.Extension +1 -0
- data/embulk-standards/src/test/java/org/embulk/standards/TestCsvFormatterPlugin.java +312 -0
- data/embulk-standards/src/test/java/org/embulk/standards/TestCsvParserPlugin.java +75 -0
- data/embulk-standards/src/test/java/org/embulk/standards/TestCsvTokenizer.java +360 -0
- data/embulk-standards/src/test/java/org/embulk/standards/TestRenameFilterPlugin.java +88 -0
- data/embulk.gemspec +39 -0
- data/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/gradlew +164 -0
- data/gradlew.bat +90 -0
- data/lib/embulk.rb +72 -0
- data/lib/embulk/buffer.rb +22 -0
- data/lib/embulk/column.rb +70 -0
- data/lib/embulk/command/embulk_bundle.rb +56 -0
- data/lib/embulk/command/embulk_example.rb +32 -0
- data/lib/embulk/command/embulk_generate_bin.rb +62 -0
- data/lib/embulk/command/embulk_main.rb +2 -0
- data/lib/embulk/command/embulk_migrate_plugin.rb +170 -0
- data/lib/embulk/command/embulk_new_plugin.rb +124 -0
- data/lib/embulk/command/embulk_run.rb +470 -0
- data/lib/embulk/command/embulk_selfupdate.rb +84 -0
- data/lib/embulk/data/bundle/.bundle/config +3 -0
- data/lib/embulk/data/bundle/.ruby-version +1 -0
- data/lib/embulk/data/bundle/Gemfile +26 -0
- data/lib/embulk/data/bundle/embulk/filter/example.rb +42 -0
- data/lib/embulk/data/bundle/embulk/input/example.rb +54 -0
- data/lib/embulk/data/bundle/embulk/output/example.rb +58 -0
- data/lib/embulk/data/new/LICENSE.txt +21 -0
- data/lib/embulk/data/new/README.md.erb +111 -0
- data/lib/embulk/data/new/gitignore.erb +13 -0
- data/lib/embulk/data/new/java/build.gradle.erb +73 -0
- data/lib/embulk/data/new/java/decoder.java.erb +84 -0
- data/lib/embulk/data/new/java/encoder.java.erb +86 -0
- data/lib/embulk/data/new/java/file_input.java.erb +143 -0
- data/lib/embulk/data/new/java/file_output.java.erb +93 -0
- data/lib/embulk/data/new/java/filter.java.erb +56 -0
- data/lib/embulk/data/new/java/formatter.java.erb +54 -0
- data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/lib/embulk/data/new/java/gradlew +164 -0
- data/lib/embulk/data/new/java/gradlew.bat +90 -0
- data/lib/embulk/data/new/java/input.java.erb +87 -0
- data/lib/embulk/data/new/java/output.java.erb +77 -0
- data/lib/embulk/data/new/java/parser.java.erb +60 -0
- data/lib/embulk/data/new/java/plugin_loader.rb.erb +3 -0
- data/lib/embulk/data/new/java/test.java.erb +5 -0
- data/lib/embulk/data/new/ruby/.ruby-version +1 -0
- data/lib/embulk/data/new/ruby/Gemfile +2 -0
- data/lib/embulk/data/new/ruby/Rakefile +3 -0
- data/lib/embulk/data/new/ruby/decoder_guess.rb.erb +25 -0
- data/lib/embulk/data/new/ruby/filter.rb.erb +41 -0
- data/lib/embulk/data/new/ruby/formatter.rb.erb +49 -0
- data/lib/embulk/data/new/ruby/gemspec.erb +20 -0
- data/lib/embulk/data/new/ruby/input.rb.erb +59 -0
- data/lib/embulk/data/new/ruby/output.rb.erb +61 -0
- data/lib/embulk/data/new/ruby/parser.rb.erb +44 -0
- data/lib/embulk/data/new/ruby/parser_guess.rb.erb +65 -0
- data/lib/embulk/data/package_data.rb +50 -0
- data/lib/embulk/data_source.rb +220 -0
- data/lib/embulk/decoder_plugin.rb +27 -0
- data/lib/embulk/encoder_plugin.rb +27 -0
- data/lib/embulk/error.rb +8 -0
- data/lib/embulk/executor_plugin.rb +23 -0
- data/lib/embulk/file_input.rb +87 -0
- data/lib/embulk/file_input_plugin.rb +27 -0
- data/lib/embulk/file_output.rb +56 -0
- data/lib/embulk/file_output_plugin.rb +27 -0
- data/lib/embulk/filter_plugin.rb +105 -0
- data/lib/embulk/formatter_plugin.rb +105 -0
- data/lib/embulk/guess/charset.rb +44 -0
- data/lib/embulk/guess/csv.rb +327 -0
- data/lib/embulk/guess/gzip.rb +18 -0
- data/lib/embulk/guess/newline.rb +22 -0
- data/lib/embulk/guess/schema_guess.rb +118 -0
- data/lib/embulk/guess/time_format_guess.rb +394 -0
- data/lib/embulk/guess_plugin.rb +129 -0
- data/lib/embulk/input_plugin.rb +121 -0
- data/lib/embulk/java/bootstrap.rb +24 -0
- data/lib/embulk/java/imports.rb +69 -0
- data/lib/embulk/java/time_helper.rb +79 -0
- data/lib/embulk/java_plugin.rb +90 -0
- data/lib/embulk/logger.rb +154 -0
- data/lib/embulk/output_plugin.rb +150 -0
- data/lib/embulk/page.rb +30 -0
- data/lib/embulk/page_builder.rb +76 -0
- data/lib/embulk/parser_plugin.rb +78 -0
- data/lib/embulk/plugin.rb +239 -0
- data/lib/embulk/plugin_registry.rb +96 -0
- data/lib/embulk/runner.rb +184 -0
- data/lib/embulk/schema.rb +103 -0
- data/lib/embulk/version.rb +3 -0
- data/settings.gradle +6 -0
- data/test/guess/test_schema_guess.rb +11 -0
- data/test/guess/test_time_format_guess.rb +133 -0
- data/test/helper.rb +21 -0
- data/test/run-test.rb +14 -0
- metadata +566 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
package org.embulk.spi;
|
|
2
|
+
|
|
3
|
+
import static org.junit.Assert.assertEquals;
|
|
4
|
+
import static org.junit.Assert.fail;
|
|
5
|
+
import java.io.ByteArrayInputStream;
|
|
6
|
+
import java.io.IOException;
|
|
7
|
+
import java.io.InputStream;
|
|
8
|
+
import org.junit.Rule;
|
|
9
|
+
import org.junit.Test;
|
|
10
|
+
import com.google.common.collect.ImmutableList;
|
|
11
|
+
import org.embulk.EmbulkTestRuntime;
|
|
12
|
+
import org.embulk.spi.util.InputStreamFileInput;
|
|
13
|
+
|
|
14
|
+
public class TestInputStreamFileInput
|
|
15
|
+
{
|
|
16
|
+
@Rule
|
|
17
|
+
public EmbulkTestRuntime runtime = new EmbulkTestRuntime();
|
|
18
|
+
|
|
19
|
+
@Test
|
|
20
|
+
public void testSingleProvider() throws IOException
|
|
21
|
+
{
|
|
22
|
+
InputStreamFileInput subject = new InputStreamFileInput(
|
|
23
|
+
runtime.getBufferAllocator(),
|
|
24
|
+
provider(new ByteArrayInputStream("abcdef".getBytes("UTF-8"))));
|
|
25
|
+
assertEquals(true, subject.nextFile());
|
|
26
|
+
assertEquals("abcdef", bufferToString(subject.poll()));
|
|
27
|
+
assertEquals(null, subject.poll());
|
|
28
|
+
subject.close();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@Test
|
|
32
|
+
public void testMultipleProvider() throws IOException
|
|
33
|
+
{
|
|
34
|
+
InputStreamFileInput subject = new InputStreamFileInput(
|
|
35
|
+
runtime.getBufferAllocator(), provider(
|
|
36
|
+
new ByteArrayInputStream("abcdef".getBytes("UTF-8")),
|
|
37
|
+
new ByteArrayInputStream("ghijkl".getBytes("UTF-8")),
|
|
38
|
+
new ByteArrayInputStream("mnopqr".getBytes("UTF-8"))));
|
|
39
|
+
assertEquals(true, subject.nextFile());
|
|
40
|
+
assertEquals("abcdef", bufferToString(subject.poll()));
|
|
41
|
+
assertEquals(true, subject.nextFile());
|
|
42
|
+
assertEquals("ghijkl", bufferToString(subject.poll()));
|
|
43
|
+
assertEquals(true, subject.nextFile());
|
|
44
|
+
assertEquals("mnopqr", bufferToString(subject.poll()));
|
|
45
|
+
subject.close();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@Test
|
|
49
|
+
public void testEmptyStream() throws IOException
|
|
50
|
+
{
|
|
51
|
+
InputStreamFileInput subject = new InputStreamFileInput(
|
|
52
|
+
runtime.getBufferAllocator(),
|
|
53
|
+
provider(new ByteArrayInputStream(new byte[0])));
|
|
54
|
+
assertEquals(true, subject.nextFile());
|
|
55
|
+
assertEquals(null, subject.poll());
|
|
56
|
+
subject.close();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@Test
|
|
60
|
+
public void testPollFirstException() throws IOException
|
|
61
|
+
{
|
|
62
|
+
InputStreamFileInput subject = new InputStreamFileInput(
|
|
63
|
+
runtime.getBufferAllocator(),
|
|
64
|
+
provider(new ByteArrayInputStream("abcdef".getBytes("UTF-8"))));
|
|
65
|
+
try {
|
|
66
|
+
subject.poll();
|
|
67
|
+
fail();
|
|
68
|
+
} catch (IllegalStateException ile) {
|
|
69
|
+
// OK
|
|
70
|
+
}
|
|
71
|
+
subject.close();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@Test
|
|
75
|
+
public void testEmptyProvider() throws IOException
|
|
76
|
+
{
|
|
77
|
+
InputStreamFileInput subject = new InputStreamFileInput(
|
|
78
|
+
runtime.getBufferAllocator(), provider(new InputStream[0]));
|
|
79
|
+
assertEquals(false, subject.nextFile());
|
|
80
|
+
subject.close();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@Test
|
|
84
|
+
public void testProviderOpenNextException()
|
|
85
|
+
{
|
|
86
|
+
InputStreamFileInput subject = new InputStreamFileInput(
|
|
87
|
+
runtime.getBufferAllocator(),
|
|
88
|
+
new InputStreamFileInput.Provider()
|
|
89
|
+
{
|
|
90
|
+
@Override
|
|
91
|
+
public InputStream openNext() throws IOException
|
|
92
|
+
{
|
|
93
|
+
throw new IOException("emulated exception");
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@Override
|
|
97
|
+
public void close() throws IOException
|
|
98
|
+
{
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
try {
|
|
103
|
+
subject.nextFile();
|
|
104
|
+
fail();
|
|
105
|
+
} catch (RuntimeException re) {
|
|
106
|
+
// OK
|
|
107
|
+
}
|
|
108
|
+
subject.close();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
@Test
|
|
112
|
+
public void testProviderCloseException()
|
|
113
|
+
{
|
|
114
|
+
InputStreamFileInput subject = new InputStreamFileInput(
|
|
115
|
+
runtime.getBufferAllocator(),
|
|
116
|
+
new InputStreamFileInput.Provider()
|
|
117
|
+
{
|
|
118
|
+
@Override
|
|
119
|
+
public InputStream openNext() throws IOException
|
|
120
|
+
{
|
|
121
|
+
return new ByteArrayInputStream(new byte[0]);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
@Override
|
|
125
|
+
public void close() throws IOException
|
|
126
|
+
{
|
|
127
|
+
throw new IOException("emulated exception");
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
try {
|
|
132
|
+
subject.close();
|
|
133
|
+
fail();
|
|
134
|
+
} catch (RuntimeException re) {
|
|
135
|
+
// OK
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
@Test
|
|
140
|
+
public void testInputStreamReadException()
|
|
141
|
+
{
|
|
142
|
+
InputStreamFileInput subject = new InputStreamFileInput(
|
|
143
|
+
runtime.getBufferAllocator(),
|
|
144
|
+
new InputStreamFileInput.Provider()
|
|
145
|
+
{
|
|
146
|
+
@Override
|
|
147
|
+
public InputStream openNext() throws IOException
|
|
148
|
+
{
|
|
149
|
+
return new InputStream()
|
|
150
|
+
{
|
|
151
|
+
@Override
|
|
152
|
+
public int read() throws IOException
|
|
153
|
+
{
|
|
154
|
+
throw new IOException("emulated exception");
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
@Override
|
|
160
|
+
public void close() throws IOException
|
|
161
|
+
{
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
assertEquals(true, subject.nextFile());
|
|
166
|
+
try {
|
|
167
|
+
subject.poll();
|
|
168
|
+
fail();
|
|
169
|
+
} catch (RuntimeException re) {
|
|
170
|
+
// OK
|
|
171
|
+
}
|
|
172
|
+
subject.close();
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
private InputStreamFileInput.IteratorProvider provider(
|
|
176
|
+
InputStream... inputStreams) throws IOException
|
|
177
|
+
{
|
|
178
|
+
return new InputStreamFileInput.IteratorProvider(
|
|
179
|
+
ImmutableList.copyOf(inputStreams));
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
private String bufferToString(Buffer buffer) throws IOException
|
|
183
|
+
{
|
|
184
|
+
byte[] buf = new byte[buffer.limit()];
|
|
185
|
+
buffer.getBytes(0, buf, 0, buffer.limit());
|
|
186
|
+
return new String(buf, "UTF-8");
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
package org.embulk.spi;
|
|
2
|
+
|
|
3
|
+
import static org.embulk.spi.type.Types.BOOLEAN;
|
|
4
|
+
import static org.embulk.spi.type.Types.DOUBLE;
|
|
5
|
+
import static org.embulk.spi.type.Types.LONG;
|
|
6
|
+
import static org.embulk.spi.type.Types.STRING;
|
|
7
|
+
import static org.embulk.spi.type.Types.TIMESTAMP;
|
|
8
|
+
import static org.junit.Assert.assertEquals;
|
|
9
|
+
import static org.junit.Assert.assertFalse;
|
|
10
|
+
import static org.junit.Assert.assertTrue;
|
|
11
|
+
import java.util.ArrayList;
|
|
12
|
+
import java.util.List;
|
|
13
|
+
import org.embulk.spi.time.Timestamp;
|
|
14
|
+
import org.embulk.spi.Schema;
|
|
15
|
+
import org.embulk.EmbulkTestRuntime;
|
|
16
|
+
import org.junit.After;
|
|
17
|
+
import org.junit.Before;
|
|
18
|
+
import org.junit.Rule;
|
|
19
|
+
import org.junit.Test;
|
|
20
|
+
|
|
21
|
+
public class TestPageBuilderReader
|
|
22
|
+
{
|
|
23
|
+
@Rule
|
|
24
|
+
public EmbulkTestRuntime runtime = new EmbulkTestRuntime();
|
|
25
|
+
|
|
26
|
+
public static class MockPageOutput implements PageOutput
|
|
27
|
+
{
|
|
28
|
+
public List<Page> pages;
|
|
29
|
+
|
|
30
|
+
public MockPageOutput()
|
|
31
|
+
{
|
|
32
|
+
this.pages = new ArrayList<>();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@Override
|
|
36
|
+
public void add(Page page)
|
|
37
|
+
{
|
|
38
|
+
pages.add(page);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@Override
|
|
42
|
+
public void finish()
|
|
43
|
+
{
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@Override
|
|
47
|
+
public void close()
|
|
48
|
+
{
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
private BufferAllocator bufferAllocator;
|
|
53
|
+
private PageReader reader;
|
|
54
|
+
private PageBuilder builder;
|
|
55
|
+
|
|
56
|
+
@Before
|
|
57
|
+
public void setup()
|
|
58
|
+
{
|
|
59
|
+
this.bufferAllocator = runtime.getBufferAllocator();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@After
|
|
63
|
+
public void destroy()
|
|
64
|
+
{
|
|
65
|
+
if (reader != null) {
|
|
66
|
+
reader.close();
|
|
67
|
+
reader = null;
|
|
68
|
+
}
|
|
69
|
+
if (builder != null) {
|
|
70
|
+
builder.close();
|
|
71
|
+
builder = null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@Test
|
|
76
|
+
public void testBoolean()
|
|
77
|
+
{
|
|
78
|
+
check(Schema.builder().add("col1", BOOLEAN).build(),
|
|
79
|
+
false, true, true);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@Test
|
|
83
|
+
public void testLong()
|
|
84
|
+
{
|
|
85
|
+
check(Schema.builder().add("col1", LONG).build(),
|
|
86
|
+
1L, Long.MIN_VALUE, Long.MAX_VALUE);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@Test
|
|
90
|
+
public void testDouble()
|
|
91
|
+
{
|
|
92
|
+
check(Schema.builder().add("col1", DOUBLE).build(),
|
|
93
|
+
8.1, 3.141592, 4.3);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@Test
|
|
97
|
+
public void testUniqueStrings()
|
|
98
|
+
{
|
|
99
|
+
check(Schema.builder().add("col1", STRING).build(),
|
|
100
|
+
"test1", "test2", "test0");
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@Test
|
|
104
|
+
public void testDuplicateStrings()
|
|
105
|
+
{
|
|
106
|
+
check(Schema.builder().add("col1", STRING).build(),
|
|
107
|
+
"test1", "test1", "test1");
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@Test
|
|
111
|
+
public void testDuplicateStringsMultiColumns()
|
|
112
|
+
{
|
|
113
|
+
check(Schema.builder().add("col1", STRING).add("col1", STRING).build(),
|
|
114
|
+
"test2", "test1",
|
|
115
|
+
"test1", "test2",
|
|
116
|
+
"test2", "test0",
|
|
117
|
+
"test1", "test1");
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@Test
|
|
121
|
+
public void testTimestamp()
|
|
122
|
+
{
|
|
123
|
+
check(Schema.builder().add("col1", TIMESTAMP).build(),
|
|
124
|
+
Timestamp.ofEpochMilli(0), Timestamp.ofEpochMilli(10));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@Test
|
|
128
|
+
public void testNull()
|
|
129
|
+
{
|
|
130
|
+
check(Schema.builder()
|
|
131
|
+
.add("col3", DOUBLE)
|
|
132
|
+
.add("col1", STRING)
|
|
133
|
+
.add("col3", LONG)
|
|
134
|
+
.add("col3", BOOLEAN)
|
|
135
|
+
.add("col2", TIMESTAMP)
|
|
136
|
+
.build(),
|
|
137
|
+
null, null, null, null, null,
|
|
138
|
+
null, null, null, null, null);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
@Test
|
|
142
|
+
public void testMixedTypes()
|
|
143
|
+
{
|
|
144
|
+
check(Schema.builder()
|
|
145
|
+
.add("col3", DOUBLE)
|
|
146
|
+
.add("col1", STRING)
|
|
147
|
+
.add("col3", LONG)
|
|
148
|
+
.add("col3", BOOLEAN)
|
|
149
|
+
.add("col2", TIMESTAMP)
|
|
150
|
+
.build(),
|
|
151
|
+
8122.0, "val1", 3L, false, Timestamp.ofEpochMilli(0),
|
|
152
|
+
140.15, "val2", Long.MAX_VALUE, true, Timestamp.ofEpochMilli(10));
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
private void check(Schema schema, Object... objects)
|
|
156
|
+
{
|
|
157
|
+
Page page = buildPage(schema, objects);
|
|
158
|
+
checkPage(schema, page, objects);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
private Page buildPage(Schema schema, final Object... objects)
|
|
162
|
+
{
|
|
163
|
+
List<Page> pages = buildPages(schema, objects);
|
|
164
|
+
assertEquals(1, pages.size());
|
|
165
|
+
return pages.get(0);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
private List<Page> buildPages(Schema schema, final Object... objects)
|
|
169
|
+
{
|
|
170
|
+
MockPageOutput output = new MockPageOutput();
|
|
171
|
+
this.builder = new PageBuilder(bufferAllocator, schema, output);
|
|
172
|
+
int idx = 0;
|
|
173
|
+
while (idx < objects.length) {
|
|
174
|
+
for (int column = 0; column < builder.getSchema().getColumnCount(); ++column) {
|
|
175
|
+
Object value = objects[idx++];
|
|
176
|
+
if (value == null) {
|
|
177
|
+
builder.setNull(column);
|
|
178
|
+
} else if (value instanceof Boolean) {
|
|
179
|
+
builder.setBoolean(column, (Boolean) value);
|
|
180
|
+
} else if (value instanceof Double) {
|
|
181
|
+
builder.setDouble(column, (Double) value);
|
|
182
|
+
} else if (value instanceof Long) {
|
|
183
|
+
builder.setLong(column, (Long) value);
|
|
184
|
+
} else if (value instanceof String) {
|
|
185
|
+
builder.setString(column, (String) value);
|
|
186
|
+
} else if (value instanceof Timestamp) {
|
|
187
|
+
builder.setTimestamp(column, (Timestamp) value);
|
|
188
|
+
} else {
|
|
189
|
+
throw new IllegalStateException(
|
|
190
|
+
"Unsupported type in test utils: "
|
|
191
|
+
+ value.toString());
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
builder.addRecord();
|
|
195
|
+
}
|
|
196
|
+
builder.flush();
|
|
197
|
+
builder.close();
|
|
198
|
+
return output.pages;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
private void checkPage(Schema schema, Page page, final Object... objects)
|
|
202
|
+
{
|
|
203
|
+
this.reader = new PageReader(schema);
|
|
204
|
+
reader.setPage(page);
|
|
205
|
+
int idx = 0;
|
|
206
|
+
while (idx < objects.length && reader.nextRecord()) {
|
|
207
|
+
for (int column = 0; column < reader.getSchema().getColumnCount(); ++column) {
|
|
208
|
+
Object value = objects[idx++];
|
|
209
|
+
if (value == null) {
|
|
210
|
+
assertEquals(true, reader.isNull(column));
|
|
211
|
+
} else if (value instanceof Boolean) {
|
|
212
|
+
assertEquals(value, reader.getBoolean(column));
|
|
213
|
+
} else if (value instanceof Double) {
|
|
214
|
+
assertEquals(value, reader.getDouble(column));
|
|
215
|
+
} else if (value instanceof Long) {
|
|
216
|
+
assertEquals(value, reader.getLong(column));
|
|
217
|
+
} else if (value instanceof String) {
|
|
218
|
+
assertEquals(value, reader.getString(column));
|
|
219
|
+
} else if (value instanceof Timestamp) {
|
|
220
|
+
assertEquals(value, reader.getTimestamp(column));
|
|
221
|
+
} else {
|
|
222
|
+
throw new IllegalStateException(
|
|
223
|
+
"Unsupported type in test utils: "
|
|
224
|
+
+ value.toString());
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
@Test
|
|
231
|
+
public void testEmptySchema()
|
|
232
|
+
{
|
|
233
|
+
MockPageOutput output = new MockPageOutput();
|
|
234
|
+
this.builder = new PageBuilder(bufferAllocator, Schema.builder().build(), output);
|
|
235
|
+
builder.addRecord();
|
|
236
|
+
builder.addRecord();
|
|
237
|
+
builder.flush();
|
|
238
|
+
builder.close();
|
|
239
|
+
this.reader = new PageReader(Schema.builder().build());
|
|
240
|
+
assertEquals(1, output.pages.size());
|
|
241
|
+
reader.setPage(output.pages.get(0));
|
|
242
|
+
assertTrue(reader.nextRecord());
|
|
243
|
+
assertTrue(reader.nextRecord());
|
|
244
|
+
assertFalse(reader.nextRecord());
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
@Test
|
|
248
|
+
public void testRenewPage()
|
|
249
|
+
{
|
|
250
|
+
this.bufferAllocator = new BufferAllocator()
|
|
251
|
+
{
|
|
252
|
+
@Override
|
|
253
|
+
public Buffer allocate()
|
|
254
|
+
{
|
|
255
|
+
return Buffer.allocate(1);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
@Override
|
|
259
|
+
public Buffer allocate(int minimumCapacity)
|
|
260
|
+
{
|
|
261
|
+
return Buffer.allocate(minimumCapacity);
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
assertEquals(
|
|
265
|
+
9,
|
|
266
|
+
buildPages(Schema.builder().add("col1", LONG).build(),
|
|
267
|
+
0L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L).size());
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
@Test
|
|
271
|
+
public void testRenewPageWithStrings()
|
|
272
|
+
{
|
|
273
|
+
this.bufferAllocator = new BufferAllocator()
|
|
274
|
+
{
|
|
275
|
+
@Override
|
|
276
|
+
public Buffer allocate()
|
|
277
|
+
{
|
|
278
|
+
return Buffer.allocate(1);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
@Override
|
|
282
|
+
public Buffer allocate(int minimumCapacity)
|
|
283
|
+
{
|
|
284
|
+
return Buffer.allocate(minimumCapacity);
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
assertEquals(
|
|
288
|
+
3,
|
|
289
|
+
buildPages(
|
|
290
|
+
Schema.builder()
|
|
291
|
+
.add("col1", LONG)
|
|
292
|
+
.add("col1", STRING)
|
|
293
|
+
.build(),
|
|
294
|
+
0L, "record0",
|
|
295
|
+
1L, "record1",
|
|
296
|
+
3L, "record3"
|
|
297
|
+
).size());
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
@Test
|
|
301
|
+
public void testRepeatableClose()
|
|
302
|
+
{
|
|
303
|
+
MockPageOutput output = new MockPageOutput();
|
|
304
|
+
this.builder = new PageBuilder(bufferAllocator,
|
|
305
|
+
Schema.builder().add("col1", STRING).build(), output);
|
|
306
|
+
builder.close();
|
|
307
|
+
builder.close();
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
@Test
|
|
311
|
+
public void testRepeatableFlush()
|
|
312
|
+
{
|
|
313
|
+
MockPageOutput output = new MockPageOutput();
|
|
314
|
+
this.builder = new PageBuilder(bufferAllocator,
|
|
315
|
+
Schema.builder().add("col1", STRING).build(), output);
|
|
316
|
+
builder.flush();
|
|
317
|
+
builder.flush();
|
|
318
|
+
}
|
|
319
|
+
}
|