embulk-input-zendesk 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/build.gradle +1 -1
- data/src/main/java/org/embulk/input/zendesk/ZendeskInputPlugin.java +20 -20
- data/src/test/java/org/embulk/input/zendesk/TestZendeskInputPlugin.java +42 -5
- data/src/test/java/org/embulk/input/zendesk/utils/TestZendeskValidatorUtils.java +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d972c5116a66a8dab7e295a806f977bc1cbcf1f5
|
4
|
+
data.tar.gz: f51b015c3bfc0e62093b2bb83b78781a5fd22afc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfee244009630fcff30c4a3ced32729b451e9a88b3f889efc281fbdcf6f671e2f1aa80e094fe1af3cd40b8683f1cc1e0f210b847bc662e43d4737e7619d33af2
|
7
|
+
data.tar.gz: d23006d4502f46397ffd406813e55a08532cdf6f6cb6d86ab564240edea303f1b81082c6cd33c11d5870168acf8b5e882ec7168e1c8bdb95f3d58b4e7e535dc9
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
## 0.3.2 - 2019-04-10
|
2
|
+
* [fixed] Fix generate config diff based on incremental config #54 [#54](https://github.com/treasure-data/embulk-input-zendesk/pull/54)
|
3
|
+
|
1
4
|
## 0.3.1 - 2019-04-09
|
2
5
|
* [fixed] Fix checking 404 by status code when fetching related objects #52 [#52](https://github.com/treasure-data/embulk-input-zendesk/pull/52)
|
3
6
|
|
data/build.gradle
CHANGED
@@ -213,17 +213,14 @@ public class ZendeskInputPlugin implements InputPlugin
|
|
213
213
|
{
|
214
214
|
final ConfigDiff configDiff = Exec.newConfigDiff();
|
215
215
|
|
216
|
-
if (!taskReports.isEmpty()) {
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
configDiff.set(ZendeskConstants.Field.START_TIME,
|
216
|
+
if (!taskReports.isEmpty() && task.getIncremental()) {
|
217
|
+
final TaskReport taskReport = taskReports.get(0);
|
218
|
+
if (taskReport.has(ZendeskConstants.Field.START_TIME)) {
|
219
|
+
final OffsetDateTime offsetDateTime = OffsetDateTime.ofInstant(Instant.ofEpochSecond(
|
220
|
+
taskReport.get(JsonNode.class, ZendeskConstants.Field.START_TIME).asLong()), ZoneOffset.UTC);
|
221
|
+
|
222
|
+
configDiff.set(ZendeskConstants.Field.START_TIME,
|
225
223
|
offsetDateTime.format(DateTimeFormatter.ofPattern(ZendeskConstants.Misc.RUBY_TIMESTAMP_FORMAT_INPUT)));
|
226
|
-
}
|
227
224
|
}
|
228
225
|
}
|
229
226
|
return configDiff;
|
@@ -296,16 +293,19 @@ public class ZendeskInputPlugin implements InputPlugin
|
|
296
293
|
}
|
297
294
|
}
|
298
295
|
logger.info("Fetched '{}' records from start_time '{}'", recordCount, startTime);
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
296
|
+
|
297
|
+
if (task.getIncremental()) {
|
298
|
+
if (result.has(ZendeskConstants.Field.END_TIME) && !result.get(ZendeskConstants.Field.END_TIME).isNull()
|
299
|
+
&& result.has(task.getTarget().getJsonName())) {
|
300
|
+
// NOTE: start_time compared as "=>", not ">".
|
301
|
+
// If we will use end_time for next start_time, we got the same record that is last fetched
|
302
|
+
// end_time + 1 is workaround for that
|
303
|
+
taskReport.set(ZendeskConstants.Field.START_TIME, result.get(ZendeskConstants.Field.END_TIME).asLong() + 1);
|
304
|
+
}
|
305
|
+
else {
|
306
|
+
// Sometimes no record and no end_time fetched on the job, but we should generate start_time on config_diff.
|
307
|
+
taskReport.set(ZendeskConstants.Field.START_TIME, Instant.now().getEpochSecond());
|
308
|
+
}
|
309
309
|
}
|
310
310
|
|
311
311
|
if (numberOfRecords < ZendeskConstants.Misc.MAXIMUM_RECORDS_INCREMENTAL) {
|
@@ -8,6 +8,7 @@ import org.embulk.config.ConfigSource;
|
|
8
8
|
import org.embulk.config.TaskReport;
|
9
9
|
import org.embulk.config.TaskSource;
|
10
10
|
import org.embulk.input.zendesk.services.ZendeskSupportAPIService;
|
11
|
+
import org.embulk.input.zendesk.utils.ZendeskConstants;
|
11
12
|
import org.embulk.input.zendesk.utils.ZendeskPluginTestRuntime;
|
12
13
|
import org.embulk.input.zendesk.utils.ZendeskTestHelper;
|
13
14
|
|
@@ -117,7 +118,7 @@ public class TestZendeskInputPlugin
|
|
117
118
|
when(zendeskSupportAPIService.getData(anyString(), anyInt(), anyBoolean(), anyLong())).thenReturn(dataJson);
|
118
119
|
|
119
120
|
ConfigDiff configDiff = zendeskInputPlugin.transaction(src, new Control());
|
120
|
-
String nextStartTime = configDiff.get(String.class,
|
121
|
+
String nextStartTime = configDiff.get(String.class, ZendeskConstants.Field.START_TIME);
|
121
122
|
verify(pageBuilder, times(4)).addRecord();
|
122
123
|
verify(pageBuilder, times(1)).finish();
|
123
124
|
assertEquals("2019-02-20 07:17:34 +0000", nextStartTime);
|
@@ -134,7 +135,7 @@ public class TestZendeskInputPlugin
|
|
134
135
|
.thenReturn(dataJsonNext);
|
135
136
|
|
136
137
|
ConfigDiff configDiff = zendeskInputPlugin.transaction(src, new Control());
|
137
|
-
String nextStartTime = configDiff.get(String.class,
|
138
|
+
String nextStartTime = configDiff.get(String.class, ZendeskConstants.Field.START_TIME);
|
138
139
|
verify(pageBuilder, times(1)).addRecord();
|
139
140
|
verify(pageBuilder, times(1)).finish();
|
140
141
|
assertEquals("2019-02-20 07:17:34 +0000", nextStartTime);
|
@@ -150,7 +151,7 @@ public class TestZendeskInputPlugin
|
|
150
151
|
when(zendeskSupportAPIService.getData(anyString(), anyInt(), anyBoolean(), anyLong())).thenReturn(dataJsonNext);
|
151
152
|
|
152
153
|
ConfigDiff configDiff = zendeskInputPlugin.transaction(src, new Control());
|
153
|
-
String nextStartTime = configDiff.get(String.class,
|
154
|
+
String nextStartTime = configDiff.get(String.class, ZendeskConstants.Field.START_TIME);
|
154
155
|
verify(pageBuilder, times(5)).addRecord();
|
155
156
|
verify(pageBuilder, times(1)).finish();
|
156
157
|
assertEquals("2019-02-20 07:17:34 +0000", nextStartTime);
|
@@ -166,7 +167,7 @@ public class TestZendeskInputPlugin
|
|
166
167
|
when(zendeskSupportAPIService.getData(anyString(), anyInt(), anyBoolean(), anyLong())).thenReturn(dataJson);
|
167
168
|
|
168
169
|
ConfigDiff configDiff = zendeskInputPlugin.transaction(src, new Control());
|
169
|
-
String nextStartTime = configDiff.get(String.class,
|
170
|
+
String nextStartTime = configDiff.get(String.class, ZendeskConstants.Field.START_TIME);
|
170
171
|
verify(pageBuilder, times(3)).addRecord();
|
171
172
|
verify(pageBuilder, times(1)).finish();
|
172
173
|
assertEquals("2019-02-20 07:17:34 +0000", nextStartTime);
|
@@ -187,7 +188,7 @@ public class TestZendeskInputPlugin
|
|
187
188
|
ConfigDiff configDiff = zendeskInputPlugin.transaction(src, new Control());
|
188
189
|
|
189
190
|
verify(pageBuilder, times(1)).finish();
|
190
|
-
String nextStartTime = configDiff.get(String.class,
|
191
|
+
String nextStartTime = configDiff.get(String.class, ZendeskConstants.Field.START_TIME);
|
191
192
|
assertEquals("2019-02-20 07:17:34 +0000", nextStartTime);
|
192
193
|
}
|
193
194
|
|
@@ -204,6 +205,42 @@ public class TestZendeskInputPlugin
|
|
204
205
|
Assert.assertTrue(configDiff.isEmpty());
|
205
206
|
}
|
206
207
|
|
208
|
+
@Test
|
209
|
+
public void testRunNotGenerateStartTimeWhenRunningInNonIncrementalModeAndTargetSupportIncremental()
|
210
|
+
{
|
211
|
+
final ConfigSource src = ZendeskTestHelper.getConfigSource("incremental.yml");
|
212
|
+
src.set("incremental", false);
|
213
|
+
loadData("data/tickets.json");
|
214
|
+
|
215
|
+
ConfigDiff configDiff = zendeskInputPlugin.transaction(src, new Control());
|
216
|
+
|
217
|
+
Assert.assertTrue(configDiff.isEmpty());
|
218
|
+
}
|
219
|
+
|
220
|
+
@Test
|
221
|
+
public void testRunNotGenerateStartTimeWhenRunningInIncrementalModeAndTargetDoesNotSupportIncremental()
|
222
|
+
{
|
223
|
+
final ConfigSource src = ZendeskTestHelper.getConfigSource("non-incremental.yml");
|
224
|
+
src.set("incremental", true);
|
225
|
+
loadData("data/ticket_fields.json");
|
226
|
+
|
227
|
+
ConfigDiff configDiff = zendeskInputPlugin.transaction(src, new Control());
|
228
|
+
|
229
|
+
Assert.assertTrue(configDiff.isEmpty());
|
230
|
+
}
|
231
|
+
|
232
|
+
@Test
|
233
|
+
public void testRunIncrementalGenerateStartTimeWhenRunningInIncrementalModeAndTargetSupportIncremental()
|
234
|
+
{
|
235
|
+
String expectedStartTime = "2019-02-20 07:17:34 +0000";
|
236
|
+
final ConfigSource src = ZendeskTestHelper.getConfigSource("incremental.yml");
|
237
|
+
loadData("data/tickets.json");
|
238
|
+
|
239
|
+
ConfigDiff configDiff = zendeskInputPlugin.transaction(src, new Control());
|
240
|
+
Assert.assertFalse(configDiff.isEmpty());
|
241
|
+
Assert.assertEquals(expectedStartTime, configDiff.get(String.class, ZendeskConstants.Field.START_TIME));
|
242
|
+
}
|
243
|
+
|
207
244
|
private class Control implements InputPlugin.Control
|
208
245
|
{
|
209
246
|
@Override
|
@@ -114,7 +114,7 @@ public class TestZendeskValidatorUtils
|
|
114
114
|
configSource.set("target", "ticket_fields");
|
115
115
|
configSource.set("incremental", true);
|
116
116
|
configSource.set("dedup", false);
|
117
|
-
configSource.set(
|
117
|
+
configSource.set(ZendeskConstants.Field.START_TIME, "");
|
118
118
|
|
119
119
|
final ZendeskInputPlugin.PluginTask task = configSource.loadConfig(ZendeskInputPlugin.PluginTask.class);
|
120
120
|
ZendeskValidatorUtils.validateInputTask(task, zendeskSupportAPIService);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-input-zendesk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hieu.duong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,8 +95,8 @@ files:
|
|
95
95
|
- src/test/resources/data/tickets_continue.json
|
96
96
|
- src/test/resources/data/util.json
|
97
97
|
- src/test/resources/data/util_page.json
|
98
|
+
- classpath/embulk-input-zendesk-0.3.2.jar
|
98
99
|
- classpath/commons-logging-1.2.jar
|
99
|
-
- classpath/embulk-input-zendesk-0.3.1.jar
|
100
100
|
- classpath/httpcore-4.4.10.jar
|
101
101
|
- classpath/httpclient-4.5.6.jar
|
102
102
|
- classpath/commons-codec-1.10.jar
|