embulk-input-jira 0.2.7 → 0.2.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bffa95b4ab1e2b43adb69e1a94ca3264d4c50589
4
- data.tar.gz: 949d00a53b677ad6264db49eaceaa405bbb6607b
3
+ metadata.gz: a67c13f110c81d075bc30d0b79aa5db339431a43
4
+ data.tar.gz: 968ad554324ad49f97be6f10a63dbb762aa5f440
5
5
  SHA512:
6
- metadata.gz: b238a357a63fab9aeefd3b195dcc2ad1c9f934c1a310b031c7648c63ea72537c9ab2fdd13f88519d2fab516d3d5c508b6d33e592b1af4a64f18f4d9a7852a630
7
- data.tar.gz: e35f6c9bf319e7b4802ce031592ade24b11781c7231f6191ed437550275bce3a05cb77f090902a2749037c4aa33982d6ed505f2ca994e73a5f22430eb823eef2
6
+ metadata.gz: 70811ba56c74a396048b42cc84d06198a4c14d020d05b78ef568d6fbe13a9ac6450577e386438aa909e91fab6d9be659bce9bf73e80655aa9c27101cb1cf1ff9
7
+ data.tar.gz: a15ceba7b9bda157a4017fd4fa6f4a2a1c08e559328adae2a8d86c069245fed899028ea027cd7cd22f7cc2239011720aeb5abbbcd5f68ab573661b68f0c26604
@@ -1,3 +1,7 @@
1
+ ## 0.2.8 - 2019-04-08
2
+
3
+ * [fixed] Process is hang forever when validate task [#56](https://github.com/treasure-data/embulk-input-jira/pull/56)
4
+
1
5
  ## 0.2.7 - 2019-03-05
2
6
 
3
7
  * [enhancement] Support empty JQL [#55](https://github.com/treasure-data/embulk-input-jira/pull/55)
@@ -9,15 +9,12 @@ import com.github.jrubygradle.JRubyExec
9
9
  repositories {
10
10
  mavenCentral()
11
11
  jcenter()
12
- maven {
13
- url "https://dl.bintray.com/embulk-base-restclient/maven"
14
- }
15
12
  }
16
13
  configurations {
17
14
  provided
18
15
  }
19
16
 
20
- version = "0.2.7"
17
+ version = "0.2.8"
21
18
 
22
19
  sourceCompatibility = 1.8
23
20
  targetCompatibility = 1.8
@@ -25,7 +22,6 @@ targetCompatibility = 1.8
25
22
  dependencies {
26
23
  compile "org.embulk:embulk-core:0.9.11"
27
24
  provided "org.embulk:embulk-core:0.9.11"
28
- compile "org.embulk.base.restclient:embulk-util-retryhelper-jetty92:0.6.0"
29
25
  compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.6'
30
26
  compile group: 'org.glassfish.jersey.core', name: 'jersey-client', version: '2.27'
31
27
  compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
@@ -7,6 +7,7 @@ public final class Constant
7
7
  public static final int GUESS_RECORDS_COUNT = 50;
8
8
  public static final int PREVIEW_RECORDS_COUNT = 10;
9
9
  public static final int GUESS_BUFFER_SIZE = 5 * 1024 * 1024;
10
+ public static final int HTTP_TIMEOUT = 300 * 1000;
10
11
 
11
12
  public static final String DEFAULT_TIMESTAMP_PATTERN = "%Y-%m-%dT%H:%M:%S.%L%z";
12
13
 
@@ -8,14 +8,15 @@ import com.google.gson.JsonObject;
8
8
  import com.google.gson.JsonParser;
9
9
  import com.google.gson.JsonPrimitive;
10
10
 
11
- import org.apache.http.HttpResponse;
12
11
  import org.apache.http.HttpStatus;
13
- import org.apache.http.client.HttpClient;
12
+ import org.apache.http.client.config.CookieSpecs;
14
13
  import org.apache.http.client.config.RequestConfig;
14
+ import org.apache.http.client.methods.CloseableHttpResponse;
15
15
  import org.apache.http.client.methods.HttpGet;
16
16
  import org.apache.http.client.methods.HttpPost;
17
17
  import org.apache.http.client.methods.HttpRequestBase;
18
18
  import org.apache.http.entity.StringEntity;
19
+ import org.apache.http.impl.client.CloseableHttpClient;
19
20
  import org.apache.http.impl.client.HttpClientBuilder;
20
21
  import org.apache.http.util.EntityUtils;
21
22
  import org.embulk.config.ConfigException;
@@ -40,6 +41,7 @@ import static java.util.Base64.getEncoder;
40
41
  import static org.apache.http.HttpHeaders.ACCEPT;
41
42
  import static org.apache.http.HttpHeaders.AUTHORIZATION;
42
43
  import static org.apache.http.HttpHeaders.CONTENT_TYPE;
44
+ import static org.embulk.input.jira.Constant.HTTP_TIMEOUT;
43
45
  import static org.embulk.input.jira.Constant.MIN_RESULTS;
44
46
  import static org.embulk.spi.util.RetryExecutor.retryExecutor;
45
47
 
@@ -47,8 +49,6 @@ public class JiraClient
47
49
  {
48
50
  public JiraClient() {}
49
51
 
50
- private static final int CONNECTION_TIME_OUT = 300000;
51
-
52
52
  private static final Logger LOGGER = Exec.getLogger(JiraClient.class);
53
53
 
54
54
  public void checkUserCredentials(final PluginTask task)
@@ -157,8 +157,7 @@ public class JiraClient
157
157
 
158
158
  private String authorizeAndRequest(final PluginTask task, String url, String body) throws JiraException
159
159
  {
160
- try {
161
- HttpClient client = createHttpClient();
160
+ try (CloseableHttpClient client = createHttpClient()) {
162
161
  HttpRequestBase request;
163
162
  if (body == null) {
164
163
  request = createGetRequest(task, url);
@@ -166,13 +165,14 @@ public class JiraClient
166
165
  else {
167
166
  request = createPostRequest(task, url, body);
168
167
  }
169
- HttpResponse response = client.execute(request);
170
- // Check for HTTP response code : 200 : SUCCESS
171
- int statusCode = response.getStatusLine().getStatusCode();
172
- if (statusCode != HttpStatus.SC_OK) {
173
- throw new JiraException(statusCode, extractErrorMessages(EntityUtils.toString(response.getEntity())));
168
+ try (CloseableHttpResponse response = client.execute(request)) {
169
+ // Check for HTTP response code : 200 : SUCCESS
170
+ int statusCode = response.getStatusLine().getStatusCode();
171
+ if (statusCode != HttpStatus.SC_OK) {
172
+ throw new JiraException(statusCode, extractErrorMessages(EntityUtils.toString(response.getEntity())));
173
+ }
174
+ return EntityUtils.toString(response.getEntity());
174
175
  }
175
- return EntityUtils.toString(response.getEntity());
176
176
  }
177
177
  catch (IOException e) {
178
178
  throw new JiraException(-1, e.getMessage());
@@ -195,13 +195,16 @@ public class JiraClient
195
195
  }
196
196
 
197
197
  @VisibleForTesting
198
- public HttpClient createHttpClient()
198
+ public CloseableHttpClient createHttpClient()
199
199
  {
200
- RequestConfig config = RequestConfig.custom()
201
- .setConnectTimeout(CONNECTION_TIME_OUT)
202
- .setConnectionRequestTimeout(CONNECTION_TIME_OUT)
203
- .build();
204
- return HttpClientBuilder.create().setDefaultRequestConfig(config).build();
200
+ return HttpClientBuilder.create()
201
+ .setDefaultRequestConfig(RequestConfig.custom()
202
+ .setConnectTimeout(HTTP_TIMEOUT)
203
+ .setConnectionRequestTimeout(HTTP_TIMEOUT)
204
+ .setSocketTimeout(HTTP_TIMEOUT)
205
+ .setCookieSpec(CookieSpecs.STANDARD)
206
+ .build())
207
+ .build();
205
208
  }
206
209
 
207
210
  private HttpRequestBase createPostRequest(PluginTask task, String url, String body) throws IOException
@@ -2,6 +2,12 @@ package org.embulk.input.jira.util;
2
2
 
3
3
  import com.google.gson.JsonElement;
4
4
 
5
+ import org.apache.http.client.config.CookieSpecs;
6
+ import org.apache.http.client.config.RequestConfig;
7
+ import org.apache.http.client.methods.CloseableHttpResponse;
8
+ import org.apache.http.client.methods.HttpGet;
9
+ import org.apache.http.impl.client.CloseableHttpClient;
10
+ import org.apache.http.impl.client.HttpClientBuilder;
5
11
  import org.embulk.config.ConfigException;
6
12
  import org.embulk.input.jira.Issue;
7
13
  import org.embulk.input.jira.JiraInputPlugin.PluginTask;
@@ -17,8 +23,6 @@ import org.embulk.spi.time.TimestampParser;
17
23
  import javax.ws.rs.core.UriBuilder;
18
24
 
19
25
  import java.io.IOException;
20
- import java.net.HttpURLConnection;
21
- import java.net.URL;
22
26
  import java.util.List;
23
27
  import java.util.stream.Collectors;
24
28
  import java.util.stream.StreamSupport;
@@ -26,6 +30,7 @@ import java.util.stream.StreamSupport;
26
30
  import static com.google.common.base.Strings.isNullOrEmpty;
27
31
  import static org.embulk.input.jira.Constant.CREDENTIAL_URI_PATH;
28
32
  import static org.embulk.input.jira.Constant.DEFAULT_TIMESTAMP_PATTERN;
33
+ import static org.embulk.input.jira.Constant.HTTP_TIMEOUT;
29
34
  import static org.embulk.input.jira.Constant.SEARCH_URI_PATH;
30
35
 
31
36
  public final class JiraUtil
@@ -61,21 +66,22 @@ public final class JiraUtil
61
66
  if (isNullOrEmpty(uri)) {
62
67
  throw new ConfigException("JIRA API endpoint could not be empty");
63
68
  }
64
- HttpURLConnection connection = null;
65
- try {
66
- URL u = new URL(uri);
67
- connection = (HttpURLConnection) u.openConnection();
68
- connection.setRequestMethod("GET");
69
- connection.getResponseCode();
69
+ try (CloseableHttpClient client = HttpClientBuilder.create()
70
+ .setDefaultRequestConfig(RequestConfig.custom()
71
+ .setConnectTimeout(HTTP_TIMEOUT)
72
+ .setConnectionRequestTimeout(HTTP_TIMEOUT)
73
+ .setSocketTimeout(HTTP_TIMEOUT)
74
+ .setCookieSpec(CookieSpecs.STANDARD)
75
+ .build())
76
+ .build()) {
77
+ HttpGet request = new HttpGet(uri);
78
+ try (CloseableHttpResponse response = client.execute(request)) {
79
+ response.getStatusLine().getStatusCode();
80
+ }
70
81
  }
71
- catch (IOException e) {
82
+ catch (IOException | IllegalArgumentException e) {
72
83
  throw new ConfigException("JIRA API endpoint is incorrect or not available");
73
84
  }
74
- finally {
75
- if (connection != null) {
76
- connection.disconnect();
77
- }
78
- }
79
85
  int retryInitialWaitSec = task.getInitialRetryIntervalMillis();
80
86
  if (retryInitialWaitSec < 1) {
81
87
  throw new ConfigException("Initial retry delay should be equal or greater than 1");
@@ -3,11 +3,11 @@ package org.embulk.input.jira;
3
3
  import com.google.gson.JsonElement;
4
4
  import com.google.gson.JsonObject;
5
5
  import com.google.gson.JsonParser;
6
- import org.apache.http.HttpResponse;
7
6
  import org.apache.http.StatusLine;
8
- import org.apache.http.client.HttpClient;
7
+ import org.apache.http.client.methods.CloseableHttpResponse;
9
8
  import org.apache.http.client.methods.HttpUriRequest;
10
9
  import org.apache.http.entity.StringEntity;
10
+ import org.apache.http.impl.client.CloseableHttpClient;
11
11
  import org.embulk.config.ConfigDiff;
12
12
  import org.embulk.config.ConfigSource;
13
13
  import org.embulk.config.TaskReport;
@@ -42,8 +42,8 @@ public class JiraInputPluginTest
42
42
  private JiraClient jiraClient;
43
43
  private JsonObject data;
44
44
  private ConfigSource config;
45
- private HttpClient client = Mockito.mock(HttpClient.class);
46
- private HttpResponse response = Mockito.mock(HttpResponse.class);
45
+ private CloseableHttpClient client = Mockito.mock(CloseableHttpClient.class);
46
+ private CloseableHttpResponse response = Mockito.mock(CloseableHttpResponse.class);
47
47
  private StatusLine statusLine = Mockito.mock(StatusLine.class);
48
48
 
49
49
  private MockPageOutput output = new MockPageOutput();
@@ -2,10 +2,10 @@ package org.embulk.input.jira.client;
2
2
 
3
3
  import com.google.gson.JsonObject;
4
4
 
5
- import org.apache.http.HttpResponse;
6
5
  import org.apache.http.StatusLine;
7
- import org.apache.http.client.HttpClient;
6
+ import org.apache.http.client.methods.CloseableHttpResponse;
8
7
  import org.apache.http.entity.StringEntity;
8
+ import org.apache.http.impl.client.CloseableHttpClient;
9
9
  import org.embulk.EmbulkTestRuntime;
10
10
  import org.embulk.config.ConfigException;
11
11
  import org.embulk.config.ConfigSource;
@@ -34,8 +34,8 @@ public class JiraClientTest
34
34
  private JiraClient jiraClient;
35
35
  private PluginTask task;
36
36
 
37
- private HttpClient client = Mockito.mock(HttpClient.class);
38
- private HttpResponse response = Mockito.mock(HttpResponse.class);
37
+ private CloseableHttpClient client = Mockito.mock(CloseableHttpClient.class);
38
+ private CloseableHttpResponse response = Mockito.mock(CloseableHttpResponse.class);
39
39
  private StatusLine statusLine = Mockito.mock(StatusLine.class);
40
40
  private JsonObject data;
41
41
 
@@ -44,7 +44,7 @@ public class JiraClientTest
44
44
  {
45
45
  if (jiraClient == null) {
46
46
  jiraClient = Mockito.spy(new JiraClient());
47
- response = Mockito.mock(HttpResponse.class);
47
+ response = Mockito.mock(CloseableHttpResponse.class);
48
48
  task = TestHelpers.config().loadConfig(PluginTask.class);
49
49
  data = TestHelpers.getJsonFromFile("jira_client.json");
50
50
  }
@@ -21,9 +21,7 @@ import org.msgpack.value.Value;
21
21
  import java.io.IOException;
22
22
 
23
23
  import static org.junit.Assert.assertEquals;
24
- import static org.junit.Assert.assertNotNull;
25
- import static org.junit.Assert.assertNull;
26
- import static org.junit.Assert.assertTrue;
24
+ import static org.junit.Assert.assertThrows;
27
25
  import static org.mockito.Mockito.times;
28
26
  import static org.mockito.Mockito.verify;
29
27
 
@@ -111,148 +109,148 @@ public class JiraUtilTest
111
109
  }
112
110
 
113
111
  @Test
114
- public void test_validateTaskConfig() throws IOException
112
+ public void test_validateTaskConfig_allValid() throws IOException
115
113
  {
116
- // Happy case
117
114
  ConfigSource configSource = TestHelpers.config();
118
115
  PluginTask task = configSource.loadConfig(PluginTask.class);
119
- Exception exception = null;
120
- try {
121
- JiraUtil.validateTaskConfig(task);
122
- }
123
- catch (Exception e) {
124
- exception = e;
125
- }
126
- assertNull(exception);
127
-
128
- // empty username
129
- configSource = TestHelpers.config();
130
- configSource.set("username", "");
131
- task = configSource.loadConfig(PluginTask.class);
132
- exception = null;
133
- try {
116
+ JiraUtil.validateTaskConfig(task);
117
+ }
118
+
119
+ @Test
120
+ public void test_validateTaskConfig_emptyUsername() throws IOException
121
+ {
122
+ ConfigException exception = assertThrows("Username or email could not be empty", ConfigException.class, () -> {
123
+ ConfigSource configSource = TestHelpers.config();
124
+ configSource.set("username", "");
125
+ PluginTask task = configSource.loadConfig(PluginTask.class);
134
126
  JiraUtil.validateTaskConfig(task);
135
- }
136
- catch (Exception e) {
137
- exception = e;
138
- }
139
- assertNotNull(exception);
140
- assertTrue(exception instanceof ConfigException);
127
+ });
141
128
  assertEquals("Username or email could not be empty", exception.getMessage());
129
+ }
142
130
 
143
- // empty password
144
- configSource = TestHelpers.config();
145
- configSource.set("password", "");
146
- task = configSource.loadConfig(PluginTask.class);
147
- exception = null;
148
- try {
131
+ @Test
132
+ public void test_validateTaskConfig_emptyPassword() throws IOException
133
+ {
134
+ ConfigException exception = assertThrows(ConfigException.class, () -> {
135
+ ConfigSource configSource = TestHelpers.config();
136
+ configSource.set("password", "");
137
+ PluginTask task = configSource.loadConfig(PluginTask.class);
149
138
  JiraUtil.validateTaskConfig(task);
150
- }
151
- catch (Exception e) {
152
- exception = e;
153
- }
154
- assertNotNull(exception);
155
- assertTrue(exception instanceof ConfigException);
139
+ });
156
140
  assertEquals("Password could not be empty", exception.getMessage());
141
+ }
157
142
 
158
- // empty uri
159
- configSource = TestHelpers.config();
160
- configSource.set("uri", "");
161
- task = configSource.loadConfig(PluginTask.class);
162
- exception = null;
163
- try {
143
+ @Test
144
+ public void test_validateTaskConfig_emptyUri() throws IOException
145
+ {
146
+ ConfigException exception = assertThrows(ConfigException.class, () -> {
147
+ ConfigSource configSource = TestHelpers.config();
148
+ configSource.set("uri", "");
149
+ PluginTask task = configSource.loadConfig(PluginTask.class);
164
150
  JiraUtil.validateTaskConfig(task);
165
- }
166
- catch (Exception e) {
167
- exception = e;
168
- }
169
- assertNotNull(exception);
170
- assertTrue(exception instanceof ConfigException);
151
+ });
171
152
  assertEquals("JIRA API endpoint could not be empty", exception.getMessage());
153
+ }
154
+
155
+ @Test
156
+ public void test_validateTaskConfig_nonExistedUri() throws IOException
157
+ {
158
+ ConfigException exception = assertThrows(ConfigException.class, () -> {
159
+ ConfigSource configSource = TestHelpers.config();
160
+ configSource.set("uri", "https://not-existed-domain");
161
+ PluginTask task = configSource.loadConfig(PluginTask.class);
162
+ JiraUtil.validateTaskConfig(task);
163
+ });
164
+ assertEquals("JIRA API endpoint is incorrect or not available", exception.getMessage());
165
+ }
172
166
 
173
- // invalid uri
174
- configSource = TestHelpers.config();
175
- configSource.set("uri", "https://not-existed-domain");
176
- task = configSource.loadConfig(PluginTask.class);
177
- exception = null;
178
- try {
167
+ @Test
168
+ public void test_validateTaskConfig_invalidUriProtocol() throws IOException
169
+ {
170
+ ConfigException exception = assertThrows(ConfigException.class, () -> {
171
+ ConfigSource configSource = TestHelpers.config();
172
+ configSource.set("uri", "ftp://example.com");
173
+ PluginTask task = configSource.loadConfig(PluginTask.class);
179
174
  JiraUtil.validateTaskConfig(task);
180
- }
181
- catch (Exception e) {
182
- exception = e;
183
- }
184
- assertNotNull(exception);
185
- assertTrue(exception instanceof ConfigException);
175
+ });
186
176
  assertEquals("JIRA API endpoint is incorrect or not available", exception.getMessage());
177
+ }
187
178
 
188
- // empty jql
189
- configSource = TestHelpers.config();
190
- configSource.set("jql", "");
191
- task = configSource.loadConfig(PluginTask.class);
192
- exception = null;
193
- try {
179
+ @Test
180
+ public void test_validateTaskConfig_containSpaceUri() throws IOException
181
+ {
182
+ ConfigException exception = assertThrows(ConfigException.class, () -> {
183
+ ConfigSource configSource = TestHelpers.config();
184
+ configSource.set("uri", "https://example .com");
185
+ PluginTask task = configSource.loadConfig(PluginTask.class);
194
186
  JiraUtil.validateTaskConfig(task);
195
- }
196
- catch (Exception e) {
197
- exception = e;
198
- }
199
- assertNull(exception);
187
+ });
188
+ assertEquals("JIRA API endpoint is incorrect or not available", exception.getMessage());
189
+ }
200
190
 
201
- configSource = TestHelpers.config();
191
+ @Test
192
+ public void test_validateTaskConfig_emptyJql() throws IOException
193
+ {
194
+ ConfigSource configSource = TestHelpers.config();
195
+ configSource.set("jql", "");
196
+ PluginTask task = configSource.loadConfig(PluginTask.class);
197
+ JiraUtil.validateTaskConfig(task);
198
+ }
199
+
200
+ @Test
201
+ public void test_validateTaskConfig_missingJql() throws IOException
202
+ {
203
+ ConfigSource configSource = TestHelpers.config();
202
204
  configSource.remove("jql");
203
- task = configSource.loadConfig(PluginTask.class);
204
- exception = null;
205
- try {
205
+ PluginTask task = configSource.loadConfig(PluginTask.class);
206
+ JiraUtil.validateTaskConfig(task);
207
+ }
208
+
209
+ @Test
210
+ public void test_validateTaskConfig_RetryIntervalIs0() throws IOException
211
+ {
212
+ ConfigException exception = assertThrows(ConfigException.class, () -> {
213
+ ConfigSource configSource = TestHelpers.config();
214
+ configSource.set("initial_retry_interval_millis", 0);
215
+ PluginTask task = configSource.loadConfig(PluginTask.class);
206
216
  JiraUtil.validateTaskConfig(task);
207
- }
208
- catch (Exception e) {
209
- exception = e;
210
- }
211
- assertNull(exception);
212
-
213
- // initial_retry_interval_millis = 0
214
- configSource = TestHelpers.config();
215
- configSource.set("initial_retry_interval_millis", 0);
216
- task = configSource.loadConfig(PluginTask.class);
217
- exception = null;
218
- try {
217
+ });
218
+ assertEquals("Initial retry delay should be equal or greater than 1", exception.getMessage());
219
+ }
220
+
221
+ @Test
222
+ public void test_validateTaskConfig_RetryIntervalIsNegative() throws IOException
223
+ {
224
+ ConfigException exception = assertThrows(ConfigException.class, () -> {
225
+ ConfigSource configSource = TestHelpers.config();
226
+ configSource.set("initial_retry_interval_millis", -1);
227
+ PluginTask task = configSource.loadConfig(PluginTask.class);
219
228
  JiraUtil.validateTaskConfig(task);
220
- }
221
- catch (Exception e) {
222
- exception = e;
223
- }
224
- assertNotNull(exception);
225
- assertTrue(exception instanceof ConfigException);
229
+ });
226
230
  assertEquals("Initial retry delay should be equal or greater than 1", exception.getMessage());
231
+ }
227
232
 
228
- // retry_limit = -1
229
- configSource = TestHelpers.config();
230
- configSource.set("retry_limit", -1);
231
- task = configSource.loadConfig(PluginTask.class);
232
- exception = null;
233
- try {
233
+ @Test
234
+ public void test_validateTaskConfig_RetryLimitGreaterThan10() throws IOException
235
+ {
236
+ ConfigException exception = assertThrows(ConfigException.class, () -> {
237
+ ConfigSource configSource = TestHelpers.config();
238
+ configSource.set("retry_limit", 11);
239
+ PluginTask task = configSource.loadConfig(PluginTask.class);
234
240
  JiraUtil.validateTaskConfig(task);
235
- }
236
- catch (Exception e) {
237
- exception = e;
238
- }
239
- assertNotNull(exception);
240
- assertTrue(exception instanceof ConfigException);
241
+ });
241
242
  assertEquals("Retry limit should between 0 and 10", exception.getMessage());
243
+ }
242
244
 
243
- // retry_limit = 100
244
- configSource = TestHelpers.config();
245
- configSource.set("retry_limit", 100);
246
- task = configSource.loadConfig(PluginTask.class);
247
- exception = null;
248
- try {
245
+ @Test
246
+ public void test_validateTaskConfig_RetryLimitLessThan0() throws IOException
247
+ {
248
+ ConfigException exception = assertThrows(ConfigException.class, () -> {
249
+ ConfigSource configSource = TestHelpers.config();
250
+ configSource.set("retry_limit", -1);
251
+ PluginTask task = configSource.loadConfig(PluginTask.class);
249
252
  JiraUtil.validateTaskConfig(task);
250
- }
251
- catch (Exception e) {
252
- exception = e;
253
- }
254
- assertNotNull(exception);
255
- assertTrue(exception instanceof ConfigException);
253
+ });
256
254
  assertEquals("Retry limit should between 0 and 10", exception.getMessage());
257
255
  }
258
256
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-input-jira
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - uu59
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-03-04 00:00:00.000000000 Z
12
+ date: 2019-04-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  requirement: !ruby/object:Gem::Requirement
@@ -56,8 +56,7 @@ files:
56
56
  - build.gradle
57
57
  - classpath/commons-codec-1.10.jar
58
58
  - classpath/commons-logging-1.2.jar
59
- - classpath/embulk-input-jira-0.2.7.jar
60
- - classpath/embulk-util-retryhelper-jetty92-0.6.0.jar
59
+ - classpath/embulk-input-jira-0.2.8.jar
61
60
  - classpath/gson-2.8.5.jar
62
61
  - classpath/httpclient-4.5.6.jar
63
62
  - classpath/httpcore-4.4.10.jar
@@ -66,10 +65,6 @@ files:
66
65
  - classpath/javax.ws.rs-api-2.1.jar
67
66
  - classpath/jersey-client-2.27.jar
68
67
  - classpath/jersey-common-2.27.jar
69
- - classpath/jetty-client-9.2.14.v20151106.jar
70
- - classpath/jetty-http-9.2.14.v20151106.jar
71
- - classpath/jetty-io-9.2.14.v20151106.jar
72
- - classpath/jetty-util-9.2.14.v20151106.jar
73
68
  - classpath/osgi-resource-locator-1.0.1.jar
74
69
  - config/checkstyle/checkstyle.xml
75
70
  - config/checkstyle/default.xml