embulk-input-zendesk 0.3.1 → 0.3.2
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 +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
|