Skip to content

Commit ce3b270

Browse files
authored
Merge pull request #11 from trocco-io/feature/add-maximum-retries
Add maximum_retries config to limit BOX API retry duration
2 parents 1269b6a + 6f97893 commit ce3b270

4 files changed

Lines changed: 62 additions & 1 deletion

File tree

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ dependencies {
4343
runtimeOnly('org.bouncycastle:bcprov-jdk15on:1.70')
4444
runtimeOnly('org.bouncycastle:bcpkix-jdk15on:1.70')
4545
testCompile "junit:junit:4.+"
46+
testCompile "org.embulk:embulk-api:${embulkVersion}"
47+
testCompile "org.embulk:embulk-spi:${embulkVersion}"
4648
}
4749

4850
embulkPlugin {

src/main/java/org/embulk/input/box/BoxClient.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public BoxClient(PluginTask pluginTask) {
3636
} else {
3737
throw new ConfigException("auth_method: " + authMethod + " is not allowd");
3838
}
39+
client.setMaxRetryAttempts(pluginTask.getMaximumRetries());
3940
this.pluginTask = pluginTask;
4041
} catch (IOException e) {
4142
logger.error(e.getMessage(), e);

src/main/java/org/embulk/input/box/PluginTask.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,8 @@ public interface PluginTask extends Task {
2828
@Config("stop_when_file_not_found")
2929
@ConfigDefault("false")
3030
boolean getStopWhenFileNotFound();
31+
32+
@Config("maximum_retries")
33+
@ConfigDefault("3")
34+
int getMaximumRetries();
3135
}
Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,57 @@
11
package org.embulk.input.box;
22

3-
public class TestBoxFileInputPlugin {}
3+
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertFalse;
5+
import static org.junit.Assert.assertTrue;
6+
7+
import org.embulk.config.ConfigSource;
8+
import org.embulk.util.config.ConfigMapper;
9+
import org.embulk.util.config.ConfigMapperFactory;
10+
import org.junit.Test;
11+
12+
public class TestBoxFileInputPlugin {
13+
private static final ConfigMapperFactory CONFIG_MAPPER_FACTORY =
14+
ConfigMapperFactory.builder().addDefaultModules().build();
15+
private static final ConfigMapper CONFIG_MAPPER = CONFIG_MAPPER_FACTORY.createConfigMapper();
16+
17+
private ConfigSource baseJwtConfig() {
18+
return CONFIG_MAPPER_FACTORY
19+
.newConfigSource()
20+
.set("auth_method", "jwt")
21+
.set("json_config", "{}")
22+
.set("folder_id", "1234");
23+
}
24+
25+
@Test
26+
public void maximum_retries_defaults_to_3() {
27+
PluginTask task = CONFIG_MAPPER.map(baseJwtConfig(), PluginTask.class);
28+
assertEquals(3, task.getMaximumRetries());
29+
}
30+
31+
@Test
32+
public void maximum_retries_accepts_explicit_value() {
33+
PluginTask task =
34+
CONFIG_MAPPER.map(baseJwtConfig().set("maximum_retries", 10), PluginTask.class);
35+
assertEquals(10, task.getMaximumRetries());
36+
}
37+
38+
@Test
39+
public void maximum_retries_accepts_zero() {
40+
PluginTask task =
41+
CONFIG_MAPPER.map(baseJwtConfig().set("maximum_retries", 0), PluginTask.class);
42+
assertEquals(0, task.getMaximumRetries());
43+
}
44+
45+
@Test
46+
public void stop_when_file_not_found_defaults_to_false() {
47+
PluginTask task = CONFIG_MAPPER.map(baseJwtConfig(), PluginTask.class);
48+
assertFalse(task.getStopWhenFileNotFound());
49+
}
50+
51+
@Test
52+
public void stop_when_file_not_found_can_be_true() {
53+
PluginTask task =
54+
CONFIG_MAPPER.map(baseJwtConfig().set("stop_when_file_not_found", true), PluginTask.class);
55+
assertTrue(task.getStopWhenFileNotFound());
56+
}
57+
}

0 commit comments

Comments
 (0)