Skip to content

Commit 8ff7cfe

Browse files
Merge pull request #19816 from stuartwdouglas/ct-testing
Don't rely on vert.x for CT tests
2 parents 7b44ba0 + 9e43b96 commit 8ff7cfe

File tree

34 files changed

+476
-345
lines changed

34 files changed

+476
-345
lines changed

bom/application/pom.xml

-7
Original file line numberDiff line numberDiff line change
@@ -1551,13 +1551,6 @@
15511551
<artifactId>quarkus-vertx-http-deployment</artifactId>
15521552
<version>${project.version}</version>
15531553
</dependency>
1554-
<dependency>
1555-
<groupId>io.quarkus</groupId>
1556-
<artifactId>quarkus-vertx-http-deployment</artifactId>
1557-
<version>${project.version}</version>
1558-
<type>test-jar</type>
1559-
<scope>test</scope>
1560-
</dependency>
15611554
<dependency>
15621555
<groupId>io.quarkus</groupId>
15631556
<artifactId>quarkus-vertx-web</artifactId>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package io.quarkus.deployment.dev.testing;
2+
3+
import java.util.function.Consumer;
4+
5+
import io.quarkus.dev.testing.ContinuousTestingSharedStateManager;
6+
7+
public class ContinuousTestingSharedStateListener implements TestListener {
8+
9+
private volatile ContinuousTestingSharedStateManager.State lastState;
10+
11+
@Override
12+
public void listenerRegistered(TestController testController) {
13+
14+
}
15+
16+
@Override
17+
public void testsEnabled() {
18+
if (lastState == null) {
19+
ContinuousTestingSharedStateManager
20+
.setLastState(new ContinuousTestingSharedStateManager.State(
21+
ContinuousTestingSharedStateManager.getLastState().lastRun, true, false,
22+
0, 0, 0, 0,
23+
0, 0, 0, ContinuousTestingSharedStateManager.getLastState().isBrokenOnly,
24+
ContinuousTestingSharedStateManager.getLastState().isTestOutput,
25+
ContinuousTestingSharedStateManager.getLastState().isInstrumentationBasedReload,
26+
ContinuousTestingSharedStateManager.getLastState().isLiveReload));
27+
} else {
28+
ContinuousTestingSharedStateManager
29+
.setLastState(lastState);
30+
}
31+
}
32+
33+
@Override
34+
public void testsDisabled() {
35+
ContinuousTestingSharedStateManager.setRunning(false);
36+
}
37+
38+
@Override
39+
public void testRunStarted(Consumer<TestRunListener> listenerConsumer) {
40+
ContinuousTestingSharedStateManager.setInProgress(true);
41+
listenerConsumer.accept(new TestRunListener() {
42+
43+
@Override
44+
public void runComplete(TestRunResults testRunResults) {
45+
lastState = new ContinuousTestingSharedStateManager.State(testRunResults.getId(), true, false,
46+
testRunResults.getPassedCount() +
47+
testRunResults.getFailedCount() +
48+
testRunResults.getSkippedCount(),
49+
testRunResults.getPassedCount(),
50+
testRunResults.getFailedCount(), testRunResults.getSkippedCount(),
51+
testRunResults.getCurrentPassedCount(), testRunResults.getCurrentFailedCount(),
52+
testRunResults.getCurrentSkippedCount(),
53+
ContinuousTestingSharedStateManager.getLastState().isBrokenOnly,
54+
ContinuousTestingSharedStateManager.getLastState().isTestOutput,
55+
ContinuousTestingSharedStateManager.getLastState().isInstrumentationBasedReload,
56+
ContinuousTestingSharedStateManager.getLastState().isLiveReload);
57+
ContinuousTestingSharedStateManager.setLastState(lastState);
58+
}
59+
60+
@Override
61+
public void noTests(TestRunResults results) {
62+
runComplete(results);
63+
}
64+
65+
@Override
66+
public void runAborted() {
67+
ContinuousTestingSharedStateManager.setInProgress(false);
68+
}
69+
});
70+
71+
}
72+
73+
@Override
74+
public void setBrokenOnly(boolean bo) {
75+
ContinuousTestingSharedStateManager.setBrokenOnly(bo);
76+
}
77+
78+
@Override
79+
public void setTestOutput(boolean to) {
80+
ContinuousTestingSharedStateManager.setTestOutput(to);
81+
}
82+
83+
@Override
84+
public void setInstrumentationBasedReload(boolean ibr) {
85+
ContinuousTestingSharedStateManager.setInstrumentationBasedReload(ibr);
86+
}
87+
88+
@Override
89+
public void setLiveReloadEnabled(boolean lre) {
90+
ContinuousTestingSharedStateManager.setLiveReloadEnabled(lre);
91+
}
92+
93+
}

core/deployment/src/main/java/io/quarkus/deployment/dev/testing/TestTracingProcessor.java

+5
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ LogCleanupFilterBuildItem handle() {
4242

4343
static volatile boolean testingSetup;
4444

45+
@BuildStep
46+
TestListenerBuildItem sharedStateListener() {
47+
return new TestListenerBuildItem(new ContinuousTestingSharedStateListener());
48+
}
49+
4550
@BuildStep(onlyIf = IsDevelopment.class)
4651
@Produce(LogHandlerBuildItem.class)
4752
@Produce(TestSetupBuildItem.class)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
package io.quarkus.dev.testing;
2+
3+
import java.util.concurrent.CopyOnWriteArraySet;
4+
import java.util.function.Consumer;
5+
6+
public class ContinuousTestingSharedStateManager {
7+
8+
private static final CopyOnWriteArraySet<Consumer<State>> stateListeners = new CopyOnWriteArraySet<>();
9+
public static final State INITIAL_STATE = new State(-1, false, false, 0, 0, 0, 0, 0, 0, 0, false, false, false, true);
10+
private static volatile State lastState = INITIAL_STATE;
11+
12+
public static void addStateListener(Consumer<State> stateListener) {
13+
stateListeners.add(stateListener);
14+
if (lastState != null) {
15+
stateListener.accept(lastState);
16+
}
17+
}
18+
19+
public static void removeStateListener(Consumer<State> stateListener) {
20+
stateListeners.remove(stateListener);
21+
}
22+
23+
public static void reset() {
24+
setLastState(INITIAL_STATE);
25+
}
26+
27+
public static void setLastState(State state) {
28+
lastState = state;
29+
for (var sl : stateListeners) {
30+
sl.accept(state);
31+
}
32+
}
33+
34+
public static State getLastState() {
35+
return lastState;
36+
}
37+
38+
public static void setInProgress(boolean inProgress) {
39+
State state = lastState;
40+
if (state != null) {
41+
setLastState(
42+
new State(state.lastRun, state.running, inProgress, state.run, state.passed, state.failed, state.skipped,
43+
state.currentPassed, state.currentFailed, state.currentSkipped, state.isBrokenOnly,
44+
state.isTestOutput, state.isInstrumentationBasedReload, state.isLiveReload));
45+
}
46+
}
47+
48+
public static void setRunning(boolean running) {
49+
State state = lastState;
50+
if (state != null) {
51+
setLastState(new State(state.lastRun, running, running && state.inProgress, state.run, state.passed, state.failed,
52+
state.skipped,
53+
state.currentPassed, state.currentFailed, state.currentSkipped, state.isBrokenOnly, state.isTestOutput,
54+
state.isInstrumentationBasedReload, state.isLiveReload));
55+
}
56+
}
57+
58+
public static void setBrokenOnly(boolean brokenOnly) {
59+
State state = lastState;
60+
if (state != null) {
61+
setLastState(new State(state.lastRun, state.running, state.inProgress, state.run, state.passed, state.failed,
62+
state.skipped,
63+
state.currentPassed, state.currentFailed, state.currentSkipped, brokenOnly, state.isTestOutput,
64+
state.isInstrumentationBasedReload, state.isLiveReload));
65+
}
66+
}
67+
68+
public static void setTestOutput(boolean testOutput) {
69+
State state = lastState;
70+
if (state != null) {
71+
setLastState(new State(state.lastRun, state.running, state.inProgress, state.run, state.passed, state.failed,
72+
state.skipped,
73+
state.currentPassed, state.currentFailed, state.currentSkipped, state.isBrokenOnly, testOutput,
74+
state.isInstrumentationBasedReload, state.isLiveReload));
75+
}
76+
}
77+
78+
public static void setInstrumentationBasedReload(boolean instrumentationBasedReload) {
79+
State state = lastState;
80+
if (state != null) {
81+
setLastState(new State(state.lastRun, state.running, state.inProgress, state.run, state.passed, state.failed,
82+
state.skipped,
83+
state.currentPassed, state.currentFailed, state.currentSkipped, state.isBrokenOnly, state.isTestOutput,
84+
instrumentationBasedReload, state.isLiveReload));
85+
}
86+
}
87+
88+
public static void setLiveReloadEnabled(boolean liveReload) {
89+
State state = lastState;
90+
if (state != null) {
91+
setLastState(new State(state.lastRun, state.running, state.inProgress, state.run, state.passed, state.failed,
92+
state.skipped,
93+
state.currentPassed, state.currentFailed, state.currentSkipped, state.isBrokenOnly, state.isTestOutput,
94+
state.isInstrumentationBasedReload, liveReload));
95+
}
96+
}
97+
98+
public static class State {
99+
public final long lastRun;
100+
public final boolean running;
101+
public final boolean inProgress;
102+
public final long run;
103+
public final long passed;
104+
public final long failed;
105+
public final long skipped;
106+
public final long currentPassed;
107+
public final long currentFailed;
108+
public final long currentSkipped;
109+
public final boolean isBrokenOnly;
110+
public final boolean isTestOutput;
111+
public final boolean isInstrumentationBasedReload;
112+
public final boolean isLiveReload;
113+
114+
public State(long lastRun, boolean running, boolean inProgress, long run, long passed, long failed, long skipped,
115+
long currentPassed, long currentFailed, long currentSkipped, boolean isBrokenOnly, boolean isTestOutput,
116+
boolean isInstrumentationBasedReload, boolean isLiveReload) {
117+
this.lastRun = lastRun;
118+
this.running = running;
119+
this.inProgress = inProgress;
120+
this.run = run;
121+
this.passed = passed;
122+
this.failed = failed;
123+
this.skipped = skipped;
124+
this.currentPassed = currentPassed;
125+
this.currentFailed = currentFailed;
126+
this.currentSkipped = currentSkipped;
127+
this.isBrokenOnly = isBrokenOnly;
128+
this.isTestOutput = isTestOutput;
129+
this.isInstrumentationBasedReload = isInstrumentationBasedReload;
130+
this.isLiveReload = isLiveReload;
131+
}
132+
133+
@Override
134+
public String toString() {
135+
return "State{" +
136+
"lastRun=" + lastRun +
137+
", running=" + running +
138+
", inProgress=" + inProgress +
139+
", run=" + run +
140+
", passed=" + passed +
141+
", failed=" + failed +
142+
", skipped=" + skipped +
143+
", isBrokenOnly=" + isBrokenOnly +
144+
", isTestOutput=" + isTestOutput +
145+
", isInstrumentationBasedReload=" + isInstrumentationBasedReload +
146+
", isLiveReload=" + isLiveReload +
147+
'}';
148+
}
149+
}
150+
}

core/devmode-spi/src/main/java/io/quarkus/dev/testing/ContinuousTestingWebsocketListener.java

-108
This file was deleted.

extensions/elytron-security-jdbc/deployment/pom.xml

-6
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,6 @@
4646
<artifactId>quarkus-resteasy-deployment</artifactId>
4747
<scope>test</scope>
4848
</dependency>
49-
<dependency>
50-
<groupId>io.quarkus</groupId>
51-
<artifactId>quarkus-vertx-http-deployment</artifactId>
52-
<type>test-jar</type>
53-
<scope>test</scope>
54-
</dependency>
5549
<dependency>
5650
<groupId>io.quarkus</groupId>
5751
<artifactId>quarkus-junit5-internal</artifactId>

0 commit comments

Comments
 (0)