Skip to content

Commit 007dc9f

Browse files
committed
chore(test): rationalize runner tests
1 parent e682ffe commit 007dc9f

File tree

9 files changed

+80
-112
lines changed

9 files changed

+80
-112
lines changed

jdbc/src/test/java/io/kestra/jdbc/runner/JdbcRunnerRetryTest.java renamed to core/src/test/java/io/kestra/core/runners/AbstractRunnerRetryTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.kestra.jdbc.runner;
1+
package io.kestra.core.runners;
22

33
import io.kestra.core.junit.annotations.ExecuteFlow;
44
import io.kestra.core.junit.annotations.FlakyTest;
@@ -9,12 +9,11 @@
99
import io.kestra.plugin.core.flow.RetryCaseTest;
1010
import jakarta.inject.Inject;
1111
import org.junit.jupiter.api.Test;
12-
import org.junit.jupiter.api.TestInstance;
1312

1413
import java.util.concurrent.TimeoutException;
1514

1615
@KestraTest(startRunner = true)
17-
public abstract class JdbcRunnerRetryTest {
16+
public abstract class AbstractRunnerRetryTest {
1817

1918
@Inject
2019
private RetryCaseTest retryCaseTest;

core/src/test/java/io/kestra/core/runners/AbstractRunnerTest.java

Lines changed: 66 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,24 @@
1515
import jakarta.inject.Inject;
1616
import org.junit.jupiter.api.Test;
1717
import org.junit.jupiter.api.TestInstance;
18+
import org.junitpioneer.jupiter.RetryingTest;
1819
import org.slf4j.event.Level;
1920

2021
import java.time.Duration;
21-
import java.util.Arrays;
22-
import java.util.HashMap;
23-
import java.util.List;
24-
import java.util.Map;
22+
import java.util.*;
2523
import java.util.concurrent.CopyOnWriteArrayList;
2624
import java.util.concurrent.TimeoutException;
2725

2826
import static io.kestra.core.tenant.TenantService.MAIN_TENANT;
2927
import static org.assertj.core.api.Assertions.assertThat;
28+
import static org.awaitility.Awaitility.await;
3029

3130
@KestraTest(startRunner = true)
3231
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
3332
//@org.junit.jupiter.api.parallel.Execution(org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT)
3433
// must be per-class to allow calling once init() which took a lot of time
3534
public abstract class AbstractRunnerTest {
36-
35+
public static final String NAMESPACE = "io.kestra.tests";
3736
public static final String TENANT_1 = "tenant1";
3837
public static final String TENANT_2 = "tenant2";
3938
@Inject
@@ -90,6 +89,12 @@ public abstract class AbstractRunnerTest {
9089
@Inject
9190
private TaskOutputService taskOutputService;
9291

92+
@Inject
93+
protected DispatchQueueInterface<Execution> executionQueue;
94+
95+
@Inject
96+
protected DispatchQueueInterface<ExecutionEvent> executionEventQueue;
97+
9398
@Test
9499
@ExecuteFlow("flows/valids/full.yaml")
95100
void full(Execution execution) throws Exception {
@@ -598,4 +603,60 @@ protected void workerTaskResultTooLarge() throws Exception {
598603
assertThat(execution.getState().getCurrent()).isEqualTo(State.Type.FAILED);
599604
assertThat(execution.getTaskRunList().size()).isEqualTo(1);
600605
}
606+
607+
@Test
608+
void avoidInfiniteExecutionLoop() throws QueueException, InterruptedException {
609+
CopyOnWriteArrayList<ExecutionEvent > executions = new CopyOnWriteArrayList<>();
610+
executionEventQueue.addListener(e -> executions.add(e));
611+
612+
Execution execution = Execution.newExecution(TestsUtils.mockFlow(), Collections.emptyList());
613+
executionQueue.emit(execution);
614+
615+
// We expect the initial execution message + the failed due to missing flow
616+
await()
617+
.during(Duration.ofMillis(500)) // Wait some time to ensure no infinite loop occurs
618+
.atMost(Duration.ofSeconds(10))
619+
.until(() -> executions.size() == 2);
620+
}
621+
622+
@Test
623+
@LoadFlows(value = {"flows/valids/waitfor-child-task-warning.yaml"}, tenantId = "waitforchildtaskwarning")
624+
void waitForChildTaskWarning() throws Exception {
625+
loopUntilTestCaseTest.waitForChildTaskWarning("waitforchildtaskwarning");
626+
}
627+
628+
629+
@Test
630+
@LoadFlows("flows/valids/errors.yaml")
631+
void errors() throws Exception {
632+
List<LogEntry> logs = new CopyOnWriteArrayList<>();
633+
logsQueue.addListener(l -> logs.add(l));
634+
635+
Execution execution = runnerUtils.runOne(MAIN_TENANT, NAMESPACE, "errors", null, null,
636+
Duration.ofSeconds(60));
637+
638+
assertThat(execution.getTaskRunList()).hasSize(7);
639+
640+
LogEntry logEntry = TestsUtils.awaitLog(logs,
641+
log -> log.getMessage().contains("- task: failed, message: Task failure"));
642+
assertThat(logEntry).isNotNull();
643+
assertThat(logEntry.getMessage()).isEqualTo("- task: failed, message: Task failure");
644+
}
645+
646+
@RetryingTest(5)
647+
@LoadFlows({"flows/valids/execution.yaml"})
648+
void executionDate() throws Exception {
649+
Execution execution = runnerUtils.runOne(MAIN_TENANT, NAMESPACE,
650+
"execution-start-date", null, null, Duration.ofSeconds(60));
651+
652+
Map<String, Object> outputs = taskOutputService.getOutputs(execution.getTaskRunList().getFirst());
653+
assertThat((String) outputs.get("value")).matches("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z");
654+
}
655+
656+
@RetryingTest(5)
657+
@LoadFlows(value = {"flows/valids/for-each-item-subflow-sleep.yaml",
658+
"flows/valids/for-each-item-no-wait.yaml"}, tenantId = "foreachitemnowait")
659+
protected void forEachItemNoWait() throws Exception {
660+
forEachItemCaseTest.forEachItemNoWait("foreachitemnowait");
661+
}
601662
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.kestra.runner.h2;
22

3-
import io.kestra.jdbc.runner.JdbcRunnerRetryTest;
3+
import io.kestra.core.runners.AbstractRunnerRetryTest;
44

5-
public class H2RunnerRetryTest extends JdbcRunnerRetryTest {
5+
public class H2RunnerRetryTest extends AbstractRunnerRetryTest {
66

77
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.kestra.runner.h2;
22

3-
import io.kestra.jdbc.runner.JdbcRunnerTest;
3+
import io.kestra.core.runners.AbstractRunnerTest;
44

5-
public class H2RunnerTest extends JdbcRunnerTest {
5+
public class H2RunnerTest extends AbstractRunnerTest {
66
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package io.kestra.runner.mysql;
22

3-
import io.kestra.jdbc.runner.JdbcRunnerRetryTest;
3+
import io.kestra.core.runners.AbstractRunnerRetryTest;
44
import org.junit.jupiter.api.TestInstance;
55
import org.junit.jupiter.api.TestInstance.Lifecycle;
66

77
@TestInstance(Lifecycle.PER_CLASS)
8-
public class MysqlRunnerRetryTest extends JdbcRunnerRetryTest {
8+
public class MysqlRunnerRetryTest extends AbstractRunnerRetryTest {
99

1010
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.kestra.runner.mysql;
22

3-
import io.kestra.jdbc.runner.JdbcRunnerTest;
3+
import io.kestra.core.runners.AbstractRunnerTest;
44

5-
public class MysqlRunnerTest extends JdbcRunnerTest {
5+
public class MysqlRunnerTest extends AbstractRunnerTest {
66

77
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.kestra.runner.postgres;
22

3-
import io.kestra.jdbc.runner.JdbcRunnerRetryTest;
3+
import io.kestra.core.runners.AbstractRunnerRetryTest;
44

5-
public class PostgresRunnerRetryTest extends JdbcRunnerRetryTest {
5+
public class PostgresRunnerRetryTest extends AbstractRunnerRetryTest {
66

77
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.kestra.runner.postgres;
22

3-
import io.kestra.jdbc.runner.JdbcRunnerTest;
3+
import io.kestra.core.runners.AbstractRunnerTest;
44

5-
public class PostgresRunnerTest extends JdbcRunnerTest {
5+
public class PostgresRunnerTest extends AbstractRunnerTest {
66

77
}

jdbc/src/test/java/io/kestra/jdbc/runner/JdbcRunnerTest.java

Lines changed: 0 additions & 92 deletions
This file was deleted.

0 commit comments

Comments
 (0)