embulk-input-jira 0.2.7 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
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