embulk-output-oracle 0.7.10 → 0.7.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -0
  3. data/build.gradle +1 -1
  4. data/classpath/{embulk-output-jdbc-0.7.10.jar → embulk-output-jdbc-0.7.11.jar} +0 -0
  5. data/classpath/{embulk-output-oracle-0.7.10.jar → embulk-output-oracle-0.7.11.jar} +0 -0
  6. data/src/test/java/org/embulk/output/oracle/BasicTest.java +450 -0
  7. data/src/test/java/org/embulk/output/oracle/DummyFileSystem.java +96 -0
  8. data/src/test/java/org/embulk/output/oracle/DummyFileSystemProvider.java +154 -0
  9. data/src/test/java/org/embulk/output/oracle/DummyPath.java +188 -0
  10. data/src/test/java/org/embulk/output/oracle/OracleTests.java +90 -0
  11. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/setup.sql +54 -0
  12. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test1.csv +4 -0
  13. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_expected.diff +2 -0
  14. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert.yml +2 -0
  15. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert_create_expected.csv +3 -0
  16. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert_direct.yml +2 -0
  17. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert_direct_direct.yml +3 -0
  18. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert_direct_large.yml +5 -0
  19. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert_direct_multibyte_table.yml +2 -0
  20. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert_direct_oci.yml +5 -0
  21. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert_direct_oci_large.yml +6 -0
  22. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert_direct_oci_multibyte_table.yml +5 -0
  23. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert_empty_expected.csv +1 -0
  24. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert_expected.csv +4 -0
  25. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert_large_expected.csv +9999 -0
  26. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_insert_multibyte_table.yml +2 -0
  27. data/src/test/resources/{oracle/data/test3/test3.csv → org/embulk/output/oracle/test/expect/basic/test_large.csv} +3 -3
  28. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_lower_column.csv +4 -0
  29. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_lower_column.yml +2 -0
  30. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_lower_column_options.csv +4 -0
  31. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_lower_column_options.yml +5 -0
  32. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_lower_table.yml +2 -0
  33. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_merge.csv +6 -0
  34. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_merge.yml +2 -0
  35. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_merge_expected.csv +6 -0
  36. data/src/test/resources/{oracle/data/test5/test5.csv → org/embulk/output/oracle/test/expect/basic/test_merge_keys.csv} +5 -4
  37. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_merge_keys.yml +3 -0
  38. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_merge_keys_expected.csv +5 -0
  39. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_merge_rule.csv +6 -0
  40. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_merge_rule.yml +3 -0
  41. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_merge_rule_expected.csv +6 -0
  42. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_replace.yml +2 -0
  43. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_replace_column_options.yml +10 -0
  44. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_replace_longname.yml +2 -0
  45. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_replace_longname_multibyte.yml +2 -0
  46. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_replace_oci.yml +3 -0
  47. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_string_timestamp.csv +4 -0
  48. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_string_timestamp.yml +5 -0
  49. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_string_timestamp_expected.csv +4 -0
  50. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_truncate_insert.yml +2 -0
  51. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_truncate_insert_expected.csv +3 -0
  52. data/src/test/resources/org/embulk/output/oracle/test/expect/basic/test_truncate_insert_oci.yml +3 -0
  53. metadata +51 -36
  54. data/src/test/java/org/embulk/input/filesplit/LocalFileSplitInputPlugin.java +0 -185
  55. data/src/test/java/org/embulk/input/filesplit/PartialFile.java +0 -50
  56. data/src/test/java/org/embulk/input/filesplit/PartialFileInputStream.java +0 -154
  57. data/src/test/java/org/embulk/output/oracle/OracleOutputPluginTest.java +0 -887
  58. data/src/test/resources/oracle/data/test1/test1.csv +0 -3
  59. data/src/test/resources/oracle/data/test4/test4.csv +0 -5
  60. data/src/test/resources/oracle/yml/test-insert-direct-direct-method.yml +0 -27
  61. data/src/test/resources/oracle/yml/test-insert-direct-empty.yml +0 -26
  62. data/src/test/resources/oracle/yml/test-insert-direct-oci-method-large.yml +0 -29
  63. data/src/test/resources/oracle/yml/test-insert-direct-oci-method-multibyte.yml +0 -29
  64. data/src/test/resources/oracle/yml/test-insert-direct-oci-method-split.yml +0 -29
  65. data/src/test/resources/oracle/yml/test-insert-direct-oci-method.yml +0 -29
  66. data/src/test/resources/oracle/yml/test-insert-direct.yml +0 -26
  67. data/src/test/resources/oracle/yml/test-insert-empty.yml +0 -28
  68. data/src/test/resources/oracle/yml/test-insert.yml +0 -26
  69. data/src/test/resources/oracle/yml/test-lower-column-options.yml +0 -29
  70. data/src/test/resources/oracle/yml/test-lower-column.yml +0 -26
  71. data/src/test/resources/oracle/yml/test-lower-table.yml +0 -26
  72. data/src/test/resources/oracle/yml/test-merge-keys.yml +0 -23
  73. data/src/test/resources/oracle/yml/test-merge-rule.yml +0 -23
  74. data/src/test/resources/oracle/yml/test-merge.yml +0 -22
  75. data/src/test/resources/oracle/yml/test-replace-empty.yml +0 -33
  76. data/src/test/resources/oracle/yml/test-replace-long-name-multibyte.yml +0 -33
  77. data/src/test/resources/oracle/yml/test-replace-long-name.yml +0 -33
  78. data/src/test/resources/oracle/yml/test-replace-oci-method.yml +0 -34
  79. data/src/test/resources/oracle/yml/test-replace.yml +0 -33
  80. data/src/test/resources/oracle/yml/test-string-timestamp.yml +0 -29
  81. data/src/test/resources/oracle/yml/test-truncate-insert-oci-method.yml +0 -27
  82. data/src/test/resources/oracle/yml/test-truncate-insert.yml +0 -26
  83. data/src/test/resources/oracle/yml/test-url.yml +0 -25
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2017981054936e0a4097227bd9a220a93f4b9381
4
- data.tar.gz: 703b7dd579a4a2a14ae6fbf8b86337ff6ea40d2a
3
+ metadata.gz: 8f8e5d0ad31d9478be97baaea6f6f6dec4be9c61
4
+ data.tar.gz: d62385a9f54e20bbbe61d6ff8e02f34aa15720a9
5
5
  SHA512:
6
- metadata.gz: 1cc468edcc8244362324c5698989d18ca81540e4c127c4d4ce1a658d6f24609629bb0612c6254e424cf40177344ae32f4f586963600626707db8b48c437ae7fa
7
- data.tar.gz: d1c047423c9444f2167e860c314b774e8deb5ecdfe5e248a5e18a0ddd37f6ad60ed3152eb022454b4302a7421f52ef3fee955a3fa2d3f18b9955b094245b4ed2
6
+ metadata.gz: 05324f21599955c3154101753cf5f6ae7d83c6c60a9e9c9ffaf29239d7663a27b8b5001efdb385744f85970ee0baa23f04c06907322865e4d3282712a091439d
7
+ data.tar.gz: 396820c0bfa04ac571e973bbf54949fd88a496652ace38219522da9cb8bfd22dff386ebc8b92b5353398fc0b55d6e1add2d9799e448fb98f7c0e51c20759ccd2
data/README.md CHANGED
@@ -136,6 +136,22 @@ out:
136
136
  $ ./gradlew gem
137
137
  ```
138
138
 
139
+ Running tests:
140
+
141
+ You need to put 'ojdbc7.jar' into 'embulk-output-oracle/driver' directory and create 'oracle.yml' as follows.
142
+ ```
143
+ type: oracle
144
+ host: localhost
145
+ port: 1521
146
+ database: database
147
+ user: user
148
+ password: pass
149
+ ```
150
+
151
+ ```
152
+ $ EMBULK_OUTPUT_ORACLE_TEST_CONFIG=oracle.yml ./gradlew :embulk-output-oracle:check --info
153
+ ```
154
+
139
155
  #### Build environment for native library
140
156
 
141
157
  For Windows (x64)
@@ -1,7 +1,7 @@
1
1
  dependencies {
2
2
  compile project(':embulk-output-jdbc')
3
3
 
4
- testCompile 'org.embulk:embulk-standards:0.8.8'
4
+ testCompile 'org.embulk:embulk-standards:0.8.22'
5
5
  testCompile project(':embulk-output-jdbc').sourceSets.test.output
6
6
  testCompile files('driver/ojdbc7.jar')
7
7
  }
@@ -0,0 +1,450 @@
1
+ package org.embulk.output.oracle;
2
+
3
+ import static org.embulk.output.oracle.OracleTests.execute;
4
+ import static org.embulk.output.oracle.OracleTests.selectRecords;
5
+ import static org.hamcrest.Matchers.is;
6
+ import static org.junit.Assert.assertThat;
7
+ import static org.junit.Assert.fail;
8
+
9
+ import java.io.File;
10
+ import java.io.IOException;
11
+ import java.net.URISyntaxException;
12
+ import java.net.URL;
13
+ import java.nio.file.FileSystems;
14
+ import java.nio.file.Path;
15
+
16
+ import org.embulk.config.ConfigDiff;
17
+ import org.embulk.config.ConfigSource;
18
+ import org.embulk.exec.PartialExecutionException;
19
+ import org.embulk.output.OracleOutputPlugin;
20
+ import org.embulk.spi.OutputPlugin;
21
+ import org.embulk.test.EmbulkTests;
22
+ import org.embulk.test.TestingEmbulk;
23
+ import org.junit.Before;
24
+ import org.junit.Rule;
25
+ import org.junit.Test;
26
+
27
+ import com.google.common.io.Resources;
28
+
29
+ public class BasicTest
30
+ {
31
+ private static final String BASIC_RESOURCE_PATH = "org/embulk/output/oracle/test/expect/basic/";
32
+
33
+ private static ConfigSource loadYamlResource(TestingEmbulk embulk, String fileName)
34
+ {
35
+ return embulk.loadYamlResource(BASIC_RESOURCE_PATH + fileName);
36
+ }
37
+
38
+ private static String readResource(String fileName)
39
+ {
40
+ return EmbulkTests.readResource(BASIC_RESOURCE_PATH + fileName);
41
+ }
42
+
43
+ @Rule
44
+ public TestingEmbulk embulk = TestingEmbulk.builder()
45
+ .registerPlugin(OutputPlugin.class, "oracle", OracleOutputPlugin.class)
46
+ .build();
47
+
48
+ private ConfigSource baseConfig;
49
+
50
+ @Before
51
+ public void setup() throws IOException
52
+ {
53
+ baseConfig = OracleTests.baseConfig();
54
+ execute(embulk, readResource("setup.sql")); // setup rows
55
+
56
+ if (System.getProperty("path.separator").equals(";")) {
57
+ // for Windows (because encoding will be set to UTF8 when executed by Eclipse)
58
+ System.setProperty("file.encoding", "MS932");
59
+ }
60
+ }
61
+
62
+ @Test
63
+ public void testInsert() throws Exception
64
+ {
65
+ Path in1 = toPath("test1.csv");
66
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert.yml")), in1);
67
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_expected.csv")));
68
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
69
+ }
70
+
71
+ @Test
72
+ public void testInsertCreate() throws Exception
73
+ {
74
+ execute(embulk, "DROP TABLE TEST1;" + System.lineSeparator() + "EXIT;");
75
+
76
+ Path in1 = toPath("test1.csv");
77
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert.yml")), in1);
78
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_create_expected.csv")));
79
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
80
+ }
81
+
82
+ @Test
83
+ public void testInsertMultibyteTable() throws Exception
84
+ {
85
+ Path in1 = toPath("test1.csv");
86
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_multibyte_table.yml")), in1);
87
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_expected.csv")));
88
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
89
+ }
90
+
91
+ @Test
92
+ public void testInsertEmpty() throws Exception
93
+ {
94
+ Path in1 = getEmptyDir();
95
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert.yml")), in1);
96
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_empty_expected.csv")));
97
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
98
+ }
99
+
100
+ @Test
101
+ public void testInsertDirect() throws Exception
102
+ {
103
+ Path in1 = toPath("test1.csv");
104
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct.yml")), in1);
105
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_expected.csv")));
106
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
107
+ }
108
+
109
+ // insert_method: direct
110
+ @Test
111
+ public void testInsertDirectDirect() throws Exception
112
+ {
113
+ Path in1 = toPath("test1.csv");
114
+ try {
115
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct_direct.yml")), in1);
116
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_expected.csv")));
117
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
118
+
119
+ } catch (PartialExecutionException e) {
120
+ if (e.getCause() != null && e.getCause().getClass().equals(RuntimeException.class)
121
+ && e.getCause().getCause() != null && e.getCause().getCause().getClass().equals(AssertionError.class)) {
122
+ // ignore error
123
+ e.printStackTrace();
124
+ System.err.println("For some reason, the 'direct' mode doesn't work in gradle test task...");
125
+ return;
126
+ }
127
+ throw e;
128
+ }
129
+ }
130
+
131
+ @Test
132
+ public void testInsertDirectOCI() throws Exception
133
+ {
134
+ Path in1 = toPath("test1.csv");
135
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct_oci.yml")), in1);
136
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_expected.csv")));
137
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
138
+ }
139
+
140
+ @Test
141
+ public void testInsertDirectCreate() throws Exception
142
+ {
143
+ execute(embulk, "DROP TABLE TEST1;" + System.lineSeparator() + "EXIT;");
144
+
145
+ Path in1 = toPath("test1.csv");
146
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct.yml")), in1);
147
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_create_expected.csv")));
148
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
149
+ }
150
+
151
+ @Test
152
+ public void testInsertDirectMultibyteTable() throws Exception
153
+ {
154
+ Path in1 = toPath("test1.csv");
155
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct_multibyte_table.yml")), in1);
156
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_expected.csv")));
157
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
158
+ }
159
+
160
+ @Test
161
+ public void testInsertDirectOCIMultibyteTable() throws Exception
162
+ {
163
+ Path in1 = toPath("test1.csv");
164
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct_oci_multibyte_table.yml")), in1);
165
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_expected.csv")));
166
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
167
+ }
168
+
169
+ @Test
170
+ public void testInsertDirectDuplicate() throws Exception
171
+ {
172
+ execute(embulk, "INSERT INTO TEST1(ID) VALUES('A002');" + System.lineSeparator() + "EXIT;");
173
+
174
+ Path in1 = toPath("test1.csv");
175
+ try {
176
+ embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct.yml")), in1);
177
+ fail("Exception expected.");
178
+ } catch (Exception e) {
179
+ System.out.println(e);
180
+ }
181
+ }
182
+
183
+ @Test
184
+ public void testInsertDirectOCIDuplicate() throws Exception
185
+ {
186
+ execute(embulk, "INSERT INTO TEST1(ID) VALUES('A002');" + System.lineSeparator() + "EXIT;");
187
+
188
+ Path in1 = toPath("test1.csv");
189
+ try {
190
+ embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct_oci.yml")), in1);
191
+ fail("Exception expected.");
192
+ } catch (Exception e) {
193
+ System.out.println(e);
194
+ }
195
+ }
196
+
197
+ @Test
198
+ public void testInsertDirectOCIMultibyteTableDuplicate() throws Exception
199
+ {
200
+ execute(embulk, "INSERT INTO TEST1(ID) VALUES('A002');" + System.lineSeparator() + "EXIT;");
201
+
202
+ Path in1 = toPath("test1.csv");
203
+ try {
204
+ embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct_oci_multibyte_table.yml")), in1);
205
+ fail("Exception expected.");
206
+ } catch (Exception e) {
207
+ System.out.println(e);
208
+ }
209
+ }
210
+
211
+ // Multiple output tasks will be executed.
212
+ @Test
213
+ public void testInsertDirectLarge() throws Exception
214
+ {
215
+ Path in1 = toPath("test_large.csv");
216
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct_large.yml")), in1);
217
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_large_expected.csv")));
218
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
219
+ }
220
+
221
+ // Multiple output tasks will be executed.
222
+ @Test
223
+ public void testInsertDirectOCILarge() throws Exception
224
+ {
225
+ Path in1 = toPath("test_large.csv");
226
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct_oci_large.yml")), in1);
227
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_large_expected.csv")));
228
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
229
+ }
230
+
231
+ @Test
232
+ public void testInsertDirectEmpty() throws Exception
233
+ {
234
+ Path in1 = getEmptyDir();
235
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct.yml")), in1);
236
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_empty_expected.csv")));
237
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
238
+ }
239
+
240
+ @Test
241
+ public void testTruncateInsert() throws Exception
242
+ {
243
+ Path in1 = toPath("test1.csv");
244
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_truncate_insert.yml")), in1);
245
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_truncate_insert_expected.csv")));
246
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
247
+ }
248
+
249
+ @Test
250
+ public void testTruncateInsertOCI() throws Exception
251
+ {
252
+ Path in1 = toPath("test1.csv");
253
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_truncate_insert_oci.yml")), in1);
254
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_truncate_insert_expected.csv")));
255
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
256
+ }
257
+
258
+ @Test
259
+ public void testTruncateInsertCreate() throws Exception
260
+ {
261
+ execute(embulk, "DROP TABLE TEST1;" + System.lineSeparator() + "EXIT;");
262
+
263
+ Path in1 = toPath("test1.csv");
264
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_truncate_insert.yml")), in1);
265
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_create_expected.csv")));
266
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
267
+ }
268
+
269
+ @Test
270
+ public void testReplace() throws Exception
271
+ {
272
+ Path in1 = toPath("test1.csv");
273
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_replace.yml")), in1);
274
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_create_expected.csv")));
275
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
276
+ }
277
+
278
+ @Test
279
+ public void testReplaceCreate() throws Exception
280
+ {
281
+ execute(embulk, "DROP TABLE TEST1;" + System.lineSeparator() + "EXIT;");
282
+
283
+ Path in1 = toPath("test1.csv");
284
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_replace.yml")), in1);
285
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_create_expected.csv")));
286
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
287
+ }
288
+
289
+ @Test
290
+ public void testReplaceWithColumnOptions() throws Exception
291
+ {
292
+ Path in1 = toPath("test1.csv");
293
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_replace_column_options.yml")), in1);
294
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_truncate_insert_expected.csv")));
295
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
296
+ }
297
+
298
+ @Test
299
+ public void testReplaceOCI() throws Exception
300
+ {
301
+ Path in1 = toPath("test1.csv");
302
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_replace_oci.yml")), in1);
303
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_create_expected.csv")));
304
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
305
+ }
306
+
307
+ @Test
308
+ public void testReplaceLongNameTable() throws Exception
309
+ {
310
+ Path in1 = toPath("test1.csv");
311
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_replace_longname.yml")), in1);
312
+ assertThat(selectRecords(embulk, "TEST12345678901234567890123456"), is(readResource("test_insert_create_expected.csv")));
313
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
314
+ }
315
+
316
+ @Test
317
+ public void testReplaceLongNameMultibyteTable() throws Exception
318
+ {
319
+ Path in1 = toPath("test1.csv");
320
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_replace_longname_multibyte.yml")), in1);
321
+ assertThat(selectRecords(embulk, "TEST123456789012345678"), is(readResource("test_insert_create_expected.csv")));
322
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
323
+ }
324
+
325
+ @Test
326
+ public void testReplaceEmpty() throws Exception
327
+ {
328
+ Path in1 = getEmptyDir();
329
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_replace.yml")), in1);
330
+ assertThat(selectRecords(embulk, "TEST1"), is(""));
331
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
332
+ }
333
+
334
+ @Test
335
+ public void testMerge() throws Exception
336
+ {
337
+ execute(embulk, "INSERT INTO TEST_MERGE1 VALUES('A001', 'AAA', 12.34);" + System.lineSeparator() + "EXIT;");
338
+ execute(embulk, "INSERT INTO TEST_MERGE1 VALUES('A003', NULL, NULL);" + System.lineSeparator() + "EXIT;");
339
+ execute(embulk, "INSERT INTO TEST_MERGE1 VALUES('A005', 'EEE', 56.78);" + System.lineSeparator() + "EXIT;");
340
+ execute(embulk, "INSERT INTO TEST_MERGE1 VALUES('A006', 'FFF', 0);" + System.lineSeparator() + "EXIT;");
341
+
342
+ Path in1 = toPath("test_merge.csv");
343
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_merge.yml")), in1);
344
+ assertThat(selectRecords(embulk, "TEST_MERGE1"), is(readResource("test_merge_expected.csv")));
345
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
346
+ }
347
+
348
+ @Test
349
+ public void testMergeWithKeys() throws Exception
350
+ {
351
+ execute(embulk, "INSERT INTO TEST_MERGE1 VALUES('A001', 'AAA', 11.11);" + System.lineSeparator() + "EXIT;");
352
+ execute(embulk, "INSERT INTO TEST_MERGE1 VALUES('A002', 'BBB', 22.22);" + System.lineSeparator() + "EXIT;");
353
+ execute(embulk, "INSERT INTO TEST_MERGE1 VALUES('A003', 'CCC', 33.33);" + System.lineSeparator() + "EXIT;");
354
+
355
+ Path in1 = toPath("test_merge_keys.csv");
356
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_merge_keys.yml")), in1);
357
+ assertThat(selectRecords(embulk, "TEST_MERGE1"), is(readResource("test_merge_keys_expected.csv")));
358
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
359
+ }
360
+
361
+ @Test
362
+ public void testMergeRule() throws Exception
363
+ {
364
+ execute(embulk, "INSERT INTO TEST_MERGE1 VALUES('A002', 'BBB', 22.22);" + System.lineSeparator() + "EXIT;");
365
+ execute(embulk, "INSERT INTO TEST_MERGE1 VALUES('A004', 'DDD', 44.44);" + System.lineSeparator() + "EXIT;");
366
+ execute(embulk, "INSERT INTO TEST_MERGE1 VALUES('A006', 'FFF', 66.66);" + System.lineSeparator() + "EXIT;");
367
+
368
+ Path in1 = toPath("test_merge_rule.csv");
369
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_merge_rule.yml")), in1);
370
+ assertThat(selectRecords(embulk, "TEST_MERGE1"), is(readResource("test_merge_rule_expected.csv")));
371
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
372
+ }
373
+
374
+ @Test
375
+ public void testLowerTable() throws Exception
376
+ {
377
+ Path in1 = toPath("test1.csv");
378
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_lower_table.yml")), in1);
379
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_expected.csv")));
380
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
381
+ }
382
+
383
+ @Test
384
+ public void testLowerColumn() throws Exception
385
+ {
386
+ Path in1 = toPath("test_lower_column.csv");
387
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_lower_column.yml")), in1);
388
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_expected.csv")));
389
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
390
+ }
391
+
392
+ @Test
393
+ public void testLowerColumnOptions() throws Exception
394
+ {
395
+ Path in1 = toPath("test_lower_column_options.csv");
396
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_lower_column_options.yml")), in1);
397
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_expected.csv")));
398
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
399
+ }
400
+
401
+ @Test
402
+ public void testStringToTimestamp() throws Exception
403
+ {
404
+ Path in1 = toPath("test_string_timestamp.csv");
405
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_string_timestamp.yml")), in1);
406
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_expected.csv")));
407
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
408
+ }
409
+
410
+ @Test
411
+ public void testJdbcUrl() throws Exception
412
+ {
413
+ Path in1 = toPath("test1.csv");
414
+
415
+ String host = baseConfig.get(String.class, "host");
416
+ String port = baseConfig.get(String.class, "port", "1521");
417
+ String user = baseConfig.get(String.class, "user");
418
+ String password = baseConfig.get(String.class, "password");
419
+ String database = baseConfig.get(String.class, "database");
420
+
421
+ ConfigSource config = embulk.newConfig();
422
+ config.set("type", "oracle");
423
+ config.set("url", "jdbc:oracle:thin:@" + host + ":" + port + ":" + database);
424
+ config.set("user", user);
425
+ config.set("password", password);
426
+
427
+ TestingEmbulk.RunResult result1 = embulk.runOutput(config.merge(loadYamlResource(embulk, "test_insert.yml")), in1);
428
+ assertThat(selectRecords(embulk, "TEST1"), is(readResource("test_insert_expected.csv")));
429
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
430
+ }
431
+
432
+
433
+ private Path toPath(String fileName) throws URISyntaxException
434
+ {
435
+ URL url = Resources.getResource(BASIC_RESOURCE_PATH + fileName);
436
+ return FileSystems.getDefault().getPath(new File(url.toURI()).getAbsolutePath());
437
+ }
438
+
439
+ private Path getEmptyDir() throws URISyntaxException
440
+ {
441
+ URL url = Resources.getResource(BASIC_RESOURCE_PATH + "test1.csv");
442
+ File dir = new File(new File(url.toURI()).getParentFile(), "empty.csv");
443
+ dir.mkdir();
444
+ Path path = FileSystems.getDefault().getPath(dir.getAbsolutePath());
445
+ // TestingEmbulk will throw exception when it can't open input file.
446
+ // DummyFileSystemProvider will open InputStream no matter whether file exists or not.
447
+ return new DummyPath(path, "id:string");
448
+ }
449
+
450
+ }