Skip to content

Commit 66d2989

Browse files
author
yang.guo
authored
Merge pull request #172 from FlowCI/feature/155
set seconds digit on crontab task
2 parents 18b8deb + 4893934 commit 66d2989

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

platform-api/src/main/java/com/flow/platform/api/envs/handler/FlowCrontabEnvHandler.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,17 +55,23 @@ public Set<EnvKey> dependents() {
5555
@Override
5656
void onHandle(Node node, String value) {
5757
try {
58-
new CronExpression(value);
58+
// fill seconds to crontab value
59+
String valueWithSeconds = "0 " + value;
60+
node.putEnv(env(), valueWithSeconds);
61+
new CronExpression(valueWithSeconds);
5962

60-
// setup crontab task
63+
// setup new value and crontab task
6164
nodeCrontabService.set(node);
6265
} catch (ParseException e) {
6366
throw new IllegalParameterException("Illegal FLOW_TASK_CRONTAB_CONTENT format: " + e.getMessage());
67+
} finally {
68+
// reset value to original
69+
node.putEnv(env(), value);
6470
}
6571
}
6672

6773
@Override
6874
void onUnHandle(Node node, String value) {
6975
nodeCrontabService.delete(node);
7076
}
71-
}
77+
}

platform-api/src/test/java/com/flow/platform/api/test/envs/FlowCrontabEnvHandlerTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public void initHandlers() {
5151
@Test
5252
public void should_handle_crontab_variable() throws Throwable {
5353
Node node = new Node("flow", "flow");
54-
node.putEnv(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT, "0 0/30 * * * ?");
54+
node.putEnv(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT, "0/30 * * * ?");
5555
node.putEnv(FlowEnvs.FLOW_TASK_CRONTAB_BRANCH, "master");
5656

5757
EnvHandler envHandler = handlerMap.get(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT);
@@ -61,7 +61,7 @@ public void should_handle_crontab_variable() throws Throwable {
6161
@Test(expected = IllegalParameterException.class)
6262
public void should_raise_exception_when_missing_dependent_env_var() throws Throwable {
6363
Node node = new Node("flow", "flow");
64-
node.putEnv(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT, "* * * * * ?");
64+
node.putEnv(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT, "* * * * ?");
6565

6666
EnvHandler envHandler = handlerMap.get(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT);
6767
envHandler.handle(node);
@@ -70,7 +70,7 @@ public void should_raise_exception_when_missing_dependent_env_var() throws Throw
7070
@Test(expected = IllegalParameterException.class)
7171
public void should_raise_exception_when_incorrect_crontab_format() throws Throwable {
7272
Node node = new Node("flow", "flow");
73-
node.putEnv(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT, "* * * * * *");
73+
node.putEnv(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT, "* * * * *");
7474
node.putEnv(FlowEnvs.FLOW_TASK_CRONTAB_BRANCH, "master");
7575

7676
EnvHandler envHandler = handlerMap.get(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT);

platform-api/src/test/java/com/flow/platform/api/test/service/NodeCrontabServiceTest.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,22 +51,21 @@ public void should_start_job_when_set_crontab_for_flow() throws Throwable {
5151

5252
Map<String, String> envs = new HashMap<>();
5353
envs.put(FlowEnvs.FLOW_TASK_CRONTAB_BRANCH.name(), "master");
54-
envs.put(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT.name(), "0/10 * * * * ?");
54+
envs.put(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT.name(), "0/1 * * * ?");
5555
envService.save(flow, envs, true);
5656

5757
Assert.assertNotNull(flow.getEnv(FlowEnvs.FLOW_TASK_CRONTAB_BRANCH));
5858
Assert.assertNotNull(flow.getEnv(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT));
5959

60-
// when: set crontab task for flow and wait for 30 seconds
61-
flowCrontabService.set(flow);
62-
Thread.sleep(15 * 1000);
60+
// when: set crontab task for flow and wait for 70 seconds
61+
Thread.sleep(70 * 1000);
6362

6463
// then: job should be created
6564
Assert.assertEquals(1, flowCrontabService.triggers().size());
6665
Job job = jobService.find(flow.getPath(), 1);
6766
Assert.assertEquals(JobCategory.SCHEDULER, job.getCategory());
6867
Assert.assertEquals("master", job.getEnv(FlowEnvs.FLOW_TASK_CRONTAB_BRANCH));
69-
Assert.assertEquals("0/10 * * * * ?", job.getEnv(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT));
68+
Assert.assertEquals("0/1 * * * ?", job.getEnv(FlowEnvs.FLOW_TASK_CRONTAB_CONTENT));
7069

7170
// when: delete env variable of crontab
7271
Set<String> varToDel = Sets.newHashSet(

0 commit comments

Comments
 (0)