embulk-input-gcs 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog +4 -0
- data/build.gradle +1 -1
- data/classpath/embulk-input-gcs-0.1.9.jar +0 -0
- data/src/main/java/org/embulk/input/gcs/GcsFileInputPlugin.java +14 -11
- data/src/test/java/org/embulk/input/gcs/TestGcsFileInputPlugin.java +40 -14
- metadata +3 -3
- data/classpath/embulk-input-gcs-0.1.8.jar +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d25891998dc1d0794b0fcfac04ea7a011f777f9c
|
4
|
+
data.tar.gz: cd7d9977e6bfa8df5212181ba49aaacf7998110b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9beb8bfab93341c05b076fb1937096cb86ab850da685806cd1aa29cf65ffea356e318bfdddc566321499e4ffa8b5ccac9c8028b0dd83aa20f29a6955c8556e9a
|
7
|
+
data.tar.gz: d3f872c0dd1460e5234b836761fbd7ea5f723b17371d881e4a91989b62edd10cfa98a0110eb26af5940c684a318164b1448f0ccd73962bc5db126b5c60070e8b
|
data/ChangeLog
CHANGED
data/build.gradle
CHANGED
Binary file
|
@@ -86,7 +86,6 @@ public class GcsFileInputPlugin
|
|
86
86
|
}
|
87
87
|
|
88
88
|
private static final Logger log = Exec.getLogger(GcsFileInputPlugin.class);
|
89
|
-
private static GcsAuthentication auth;
|
90
89
|
|
91
90
|
@Override
|
92
91
|
public ConfigDiff transaction(ConfigSource config,
|
@@ -115,8 +114,18 @@ public class GcsFileInputPlugin
|
|
115
114
|
}
|
116
115
|
}
|
117
116
|
|
117
|
+
Storage client = newGcsClient(task, newGcsAuth(task));
|
118
|
+
|
119
|
+
// list files recursively
|
120
|
+
task.setFiles(listFiles(task, client));
|
121
|
+
// number of processors is same with number of files
|
122
|
+
return resume(task.dump(), task.getFiles().size(), control);
|
123
|
+
}
|
124
|
+
|
125
|
+
private GcsAuthentication newGcsAuth(PluginTask task)
|
126
|
+
{
|
118
127
|
try {
|
119
|
-
|
128
|
+
return new GcsAuthentication(
|
120
129
|
task.getAuthMethod().getString(),
|
121
130
|
task.getServiceAccountEmail(),
|
122
131
|
task.getP12Keyfile().transform(localFileToPathString()),
|
@@ -126,11 +135,6 @@ public class GcsFileInputPlugin
|
|
126
135
|
} catch (GeneralSecurityException | IOException ex) {
|
127
136
|
throw new ConfigException(ex);
|
128
137
|
}
|
129
|
-
|
130
|
-
// list files recursively
|
131
|
-
task.setFiles(listFiles(task));
|
132
|
-
// number of processors is same with number of files
|
133
|
-
return resume(task.dump(), task.getFiles().size(), control);
|
134
138
|
}
|
135
139
|
|
136
140
|
@Override
|
@@ -165,7 +169,7 @@ public class GcsFileInputPlugin
|
|
165
169
|
{
|
166
170
|
}
|
167
171
|
|
168
|
-
protected Storage newGcsClient(final PluginTask task)
|
172
|
+
protected Storage newGcsClient(final PluginTask task, final GcsAuthentication auth)
|
169
173
|
{
|
170
174
|
Storage client = null;
|
171
175
|
try {
|
@@ -188,9 +192,8 @@ public class GcsFileInputPlugin
|
|
188
192
|
};
|
189
193
|
}
|
190
194
|
|
191
|
-
public List<String> listFiles(PluginTask task)
|
195
|
+
public List<String> listFiles(PluginTask task, Storage client)
|
192
196
|
{
|
193
|
-
Storage client = newGcsClient(task);
|
194
197
|
String bucket = task.getBucket();
|
195
198
|
|
196
199
|
return listGcsFilesByPrefix(client, bucket, task.getPathPrefix(), task.getLastPath());
|
@@ -291,7 +294,7 @@ public class GcsFileInputPlugin
|
|
291
294
|
|
292
295
|
public SingleFileProvider(PluginTask task, int taskIndex)
|
293
296
|
{
|
294
|
-
this.client = newGcsClient(task);
|
297
|
+
this.client = newGcsClient(task, newGcsAuth(task));
|
295
298
|
this.bucket = task.getBucket();
|
296
299
|
this.key = task.getFiles().get(taskIndex);
|
297
300
|
}
|
@@ -34,6 +34,8 @@ import org.junit.Rule;
|
|
34
34
|
import org.junit.Test;
|
35
35
|
import static org.junit.Assert.assertEquals;
|
36
36
|
import static org.junit.Assume.assumeNotNull;
|
37
|
+
import java.lang.reflect.Method;
|
38
|
+
import java.lang.reflect.InvocationTargetException;
|
37
39
|
|
38
40
|
public class TestGcsFileInputPlugin
|
39
41
|
{
|
@@ -103,7 +105,8 @@ public class TestGcsFileInputPlugin
|
|
103
105
|
.set("path_prefix", "my-prefix")
|
104
106
|
.set("auth_method", "private_key")
|
105
107
|
.set("service_account_email", GCP_EMAIL)
|
106
|
-
.set("p12_keyfile", null)
|
108
|
+
.set("p12_keyfile", null)
|
109
|
+
.set("parser", parserConfig(schemaConfig()));
|
107
110
|
|
108
111
|
runner.transaction(config, new Control());
|
109
112
|
}
|
@@ -118,7 +121,8 @@ public class TestGcsFileInputPlugin
|
|
118
121
|
.set("auth_method", "private_key")
|
119
122
|
.set("service_account_email", GCP_EMAIL)
|
120
123
|
.set("p12_keyfile", GCP_P12_KEYFILE)
|
121
|
-
.set("p12_keyfile_fullpath", GCP_P12_KEYFILE)
|
124
|
+
.set("p12_keyfile_fullpath", GCP_P12_KEYFILE)
|
125
|
+
.set("parser", parserConfig(schemaConfig()));
|
122
126
|
|
123
127
|
runner.transaction(config, new Control());
|
124
128
|
}
|
@@ -132,7 +136,8 @@ public class TestGcsFileInputPlugin
|
|
132
136
|
.set("path_prefix", "my-prefix")
|
133
137
|
.set("auth_method", "private_key")
|
134
138
|
.set("service_account_email", GCP_EMAIL)
|
135
|
-
.set("p12_keyfile", "invalid-key.p12")
|
139
|
+
.set("p12_keyfile", "invalid-key.p12")
|
140
|
+
.set("parser", parserConfig(schemaConfig()));
|
136
141
|
|
137
142
|
runner.transaction(config, new Control());
|
138
143
|
}
|
@@ -146,34 +151,44 @@ public class TestGcsFileInputPlugin
|
|
146
151
|
.set("path_prefix", "my-prefix")
|
147
152
|
.set("auth_method", "json_key")
|
148
153
|
.set("service_account_email", GCP_EMAIL)
|
149
|
-
.set("json_keyfile", null)
|
154
|
+
.set("json_keyfile", null)
|
155
|
+
.set("parser", parserConfig(schemaConfig()));
|
150
156
|
|
151
157
|
runner.transaction(config, new Control());
|
152
158
|
}
|
153
159
|
|
154
160
|
@Test
|
155
161
|
public void testGcsClientCreateSuccessfully()
|
156
|
-
throws GeneralSecurityException, IOException,
|
162
|
+
throws GeneralSecurityException, IOException, NoSuchMethodException,
|
163
|
+
IllegalAccessException, InvocationTargetException
|
157
164
|
{
|
158
165
|
PluginTask task = config().loadConfig(PluginTask.class);
|
159
166
|
runner.transaction(config, new Control());
|
160
|
-
|
167
|
+
|
168
|
+
Method method = GcsFileInputPlugin.class.getDeclaredMethod("newGcsAuth", PluginTask.class);
|
169
|
+
method.setAccessible(true);
|
170
|
+
plugin.newGcsClient(task, (GcsAuthentication) method.invoke(plugin, task)); // no errors happens
|
161
171
|
}
|
162
172
|
|
163
173
|
@Test(expected = ConfigException.class)
|
164
174
|
public void testGcsClientCreateThrowConfigException()
|
165
|
-
throws GeneralSecurityException, IOException,
|
175
|
+
throws GeneralSecurityException, IOException, NoSuchMethodException,
|
176
|
+
IllegalAccessException, InvocationTargetException
|
166
177
|
{
|
167
178
|
ConfigSource config = Exec.newConfigSource()
|
168
179
|
.set("bucket", "non-exists-bucket")
|
169
180
|
.set("path_prefix", "my-prefix")
|
170
181
|
.set("auth_method", "json_key")
|
171
182
|
.set("service_account_email", GCP_EMAIL)
|
172
|
-
.set("json_keyfile", GCP_JSON_KEYFILE)
|
183
|
+
.set("json_keyfile", GCP_JSON_KEYFILE)
|
184
|
+
.set("parser", parserConfig(schemaConfig()));
|
173
185
|
|
174
186
|
PluginTask task = config().loadConfig(PluginTask.class);
|
175
187
|
runner.transaction(config, new Control());
|
176
|
-
|
188
|
+
|
189
|
+
Method method = GcsFileInputPlugin.class.getDeclaredMethod("newGcsAuth", PluginTask.class);
|
190
|
+
method.setAccessible(true);
|
191
|
+
plugin.newGcsClient(task, (GcsAuthentication) method.invoke(plugin, task));
|
177
192
|
}
|
178
193
|
|
179
194
|
@Test
|
@@ -201,6 +216,7 @@ public class TestGcsFileInputPlugin
|
|
201
216
|
|
202
217
|
@Test
|
203
218
|
public void testListFilesByPrefix()
|
219
|
+
throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
|
204
220
|
{
|
205
221
|
List<String> expected = Arrays.asList(
|
206
222
|
GCP_BUCKET_DIRECTORY + "sample_01.csv",
|
@@ -216,24 +232,30 @@ public class TestGcsFileInputPlugin
|
|
216
232
|
}
|
217
233
|
});
|
218
234
|
|
219
|
-
|
235
|
+
Method method = GcsFileInputPlugin.class.getDeclaredMethod("newGcsAuth", PluginTask.class);
|
236
|
+
method.setAccessible(true);
|
237
|
+
Storage client = plugin.newGcsClient(task, (GcsAuthentication) method.invoke(plugin, task));
|
220
238
|
List<String> actual = plugin.listGcsFilesByPrefix(client, GCP_BUCKET, GCP_PATH_PREFIX, Optional.<String>absent());
|
221
239
|
assertEquals(expected, actual);
|
222
|
-
|
223
240
|
assertEquals(GCP_BUCKET_DIRECTORY + "sample_02.csv", configDiff.get(String.class, "last_path"));
|
224
241
|
}
|
225
242
|
|
226
243
|
@Test
|
227
244
|
public void testListFilesByPrefixNonExistsBucket()
|
245
|
+
throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
|
228
246
|
{
|
229
247
|
PluginTask task = config.loadConfig(PluginTask.class);
|
230
248
|
runner.transaction(config, new Control());
|
231
|
-
|
249
|
+
|
250
|
+
Method method = GcsFileInputPlugin.class.getDeclaredMethod("newGcsAuth", PluginTask.class);
|
251
|
+
method.setAccessible(true);
|
252
|
+
Storage client = plugin.newGcsClient(task, (GcsAuthentication) method.invoke(plugin, task));
|
232
253
|
plugin.listGcsFilesByPrefix(client, "non-exists-bucket", "prefix", Optional.<String>absent()); // no errors happens
|
233
254
|
}
|
234
255
|
|
235
256
|
@Test
|
236
|
-
public void testGcsFileInputByOpen()
|
257
|
+
public void testGcsFileInputByOpen()
|
258
|
+
throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, IOException
|
237
259
|
{
|
238
260
|
ConfigSource config = Exec.newConfigSource()
|
239
261
|
.set("bucket", GCP_BUCKET)
|
@@ -245,7 +267,11 @@ public class TestGcsFileInputPlugin
|
|
245
267
|
|
246
268
|
PluginTask task = config.loadConfig(PluginTask.class);
|
247
269
|
runner.transaction(config, new Control());
|
248
|
-
|
270
|
+
|
271
|
+
Method method = GcsFileInputPlugin.class.getDeclaredMethod("newGcsAuth", PluginTask.class);
|
272
|
+
method.setAccessible(true);
|
273
|
+
Storage client = plugin.newGcsClient(task, (GcsAuthentication) method.invoke(plugin, task));
|
274
|
+
task.setFiles(plugin.listFiles(task, client));
|
249
275
|
|
250
276
|
assertRecords(config, output);
|
251
277
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-input-gcs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Satoshi Akama
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -63,7 +63,7 @@ files:
|
|
63
63
|
- src/test/resources/sample_02.csv
|
64
64
|
- classpath/commons-codec-1.3.jar
|
65
65
|
- classpath/commons-logging-1.1.1.jar
|
66
|
-
- classpath/embulk-input-gcs-0.1.
|
66
|
+
- classpath/embulk-input-gcs-0.1.9.jar
|
67
67
|
- classpath/google-api-client-1.19.1.jar
|
68
68
|
- classpath/google-api-services-storage-v1-rev27-1.19.1.jar
|
69
69
|
- classpath/google-http-client-1.19.0.jar
|
Binary file
|