You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by al...@apache.org on 2023/02/16 16:21:22 UTC
[camel-quarkus] 02/02: CamelQuarkusTestSupport: Lifecycle.PER_CLASS may cause following tests to fail #4569
This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit b015ac2c96eb9ff94a85ab1069c19bf7852bd885
Author: JiriOndrusek <on...@gmail.com>
AuthorDate: Wed Feb 15 10:08:20 2023 +0100
CamelQuarkusTestSupport: Lifecycle.PER_CLASS may cause following tests to fail #4569
---
.../DoubleRoutesPerClassTest.java | 61 ++++++++++++++++++++++
.../doubeRouteBuilderPerClass/FirstPerClassET.java | 60 +++++++++++++++++++++
.../RouteBuilderPerClass.java} | 26 +++------
.../SecondPerClassET.java | 60 +++++++++++++++++++++
.../camel/quarkus/test/AfterAllCallback.java | 6 ++-
.../quarkus/test/CamelQuarkusTestSupport.java | 9 +++-
.../test/common/CallbacksPerTestFalse02Test.java | 2 +-
.../test/common/CallbacksPerTestTrue02Test.java | 2 +-
.../AdviceInDoBeforeEachMethodsTest.java | 2 +-
9 files changed, 202 insertions(+), 26 deletions(-)
diff --git a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/doubeRouteBuilderPerClass/DoubleRoutesPerClassTest.java b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/doubeRouteBuilderPerClass/DoubleRoutesPerClassTest.java
new file mode 100644
index 0000000000..77baa4a278
--- /dev/null
+++ b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/doubeRouteBuilderPerClass/DoubleRoutesPerClassTest.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.test.extensions.doubeRouteBuilderPerClass;
+
+import java.util.function.Supplier;
+
+import io.quarkus.test.ContinuousTestingTestUtils;
+import io.quarkus.test.QuarkusDevModeTest;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+/**
+ * Test for https://github.com/apache/camel-quarkus/issues/4560
+ */
+public class DoubleRoutesPerClassTest {
+
+ @RegisterExtension
+ static final QuarkusDevModeTest TEST = new QuarkusDevModeTest()
+ .setArchiveProducer(new Supplier<>() {
+ @Override
+ public JavaArchive get() {
+ return ShrinkWrap.create(JavaArchive.class).addClass(RouteBuilderPerClass.class)
+ .add(new StringAsset(
+ ContinuousTestingTestUtils.appProperties("#")),
+ "application.properties");
+ }
+ })
+ .setTestArchiveProducer(new Supplier<>() {
+ @Override
+ public JavaArchive get() {
+ return ShrinkWrap.create(JavaArchive.class).addClasses(FirstPerClassET.class, SecondPerClassET.class);
+ }
+ });
+
+ @Test
+ public void checkTests() {
+ ContinuousTestingTestUtils utils = new ContinuousTestingTestUtils();
+ ContinuousTestingTestUtils.TestStatus ts = utils.waitForNextCompletion();
+
+ Assertions.assertEquals(0L, ts.getTestsFailed());
+ Assertions.assertEquals(4L, ts.getTestsPassed());
+ }
+}
diff --git a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/doubeRouteBuilderPerClass/FirstPerClassET.java b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/doubeRouteBuilderPerClass/FirstPerClassET.java
new file mode 100644
index 0000000000..759236ad4f
--- /dev/null
+++ b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/doubeRouteBuilderPerClass/FirstPerClassET.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.test.extensions.doubeRouteBuilderPerClass;
+
+import io.quarkus.test.junit.QuarkusTest;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.quarkus.test.CamelQuarkusTestSupport;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+
+@QuarkusTest
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+public class FirstPerClassET extends CamelQuarkusTestSupport {
+
+ @Override
+ protected RoutesBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:startTest").to("direct:start").to("mock:result");
+ }
+ };
+ }
+
+ @Test
+ public void someTestA() throws InterruptedException {
+ MockEndpoint mockEndpoint = getMockEndpoint("mock:result");
+ mockEndpoint.expectedBodiesReceived("Some Value");
+
+ template.sendBody("direct:startTest", null);
+
+ mockEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ public void someTestB() throws InterruptedException {
+ MockEndpoint mockEndpoint = getMockEndpoint("mock:result");
+ mockEndpoint.expectedBodiesReceived("Some Value");
+
+ template.sendBody("direct:startTest", null);
+
+ mockEndpoint.assertIsSatisfied();
+ }
+}
diff --git a/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/common/CallbacksPerTestTrue02Test.java b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/doubeRouteBuilderPerClass/RouteBuilderPerClass.java
similarity index 53%
copy from test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/common/CallbacksPerTestTrue02Test.java
copy to test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/doubeRouteBuilderPerClass/RouteBuilderPerClass.java
index 472d5d319f..a33b1d2b3e 100644
--- a/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/common/CallbacksPerTestTrue02Test.java
+++ b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/doubeRouteBuilderPerClass/RouteBuilderPerClass.java
@@ -14,27 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.test.common;
+package org.apache.camel.quarkus.test.extensions.doubeRouteBuilderPerClass;
-import java.util.concurrent.TimeUnit;
-
-import io.quarkus.test.junit.QuarkusTest;
-import org.hamcrest.Matchers;
-import org.junit.jupiter.api.Test;
-
-import static org.awaitility.Awaitility.await;
-
-// replaces CreateCamelContextPerTestTrueTest
-@QuarkusTest
-public class CallbacksPerTestTrue02Test {
-
- @Test
- public void testAfter01Class() {
-
- await().atMost(5, TimeUnit.SECONDS).until(() -> AbstractCallbacksTest.testFromAnotherClass(
- CallbacksPerTestTrue02Test.class.getSimpleName(),
- CallbacksPerTestTrue01Test.createAssertionConsumer()),
- Matchers.is(AbstractCallbacksTest.Callback.values().length));
+public class RouteBuilderPerClass extends org.apache.camel.builder.RouteBuilder {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start").setBody(constant("Some Value")).log("The body is: ${body}");
+ from("timer:timeToAct?period=5000").routeId("TimerRoute").log("Calling direct:start").to("direct:start");
}
}
diff --git a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/doubeRouteBuilderPerClass/SecondPerClassET.java b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/doubeRouteBuilderPerClass/SecondPerClassET.java
new file mode 100644
index 0000000000..563ebc565f
--- /dev/null
+++ b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/doubeRouteBuilderPerClass/SecondPerClassET.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.test.extensions.doubeRouteBuilderPerClass;
+
+import io.quarkus.test.junit.QuarkusTest;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.quarkus.test.CamelQuarkusTestSupport;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+
+@QuarkusTest
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+public class SecondPerClassET extends CamelQuarkusTestSupport {
+
+ @Override
+ protected RoutesBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:startTest").to("direct:start").to("mock:result");
+ }
+ };
+ }
+
+ @Test
+ public void someTestA() throws InterruptedException {
+ MockEndpoint mockEndpoint = getMockEndpoint("mock:result");
+ mockEndpoint.expectedBodiesReceived("Some Value");
+
+ template.sendBody("direct:startTest", null);
+
+ mockEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ public void someTestB() throws InterruptedException {
+ MockEndpoint mockEndpoint = getMockEndpoint("mock:result");
+ mockEndpoint.expectedBodiesReceived("Some Value");
+
+ template.sendBody("direct:startTest", null);
+
+ mockEndpoint.assertIsSatisfied();
+ }
+}
diff --git a/test-framework/junit5/src/main/java/org/apache/camel/quarkus/test/AfterAllCallback.java b/test-framework/junit5/src/main/java/org/apache/camel/quarkus/test/AfterAllCallback.java
index f6cb1f84be..ca01e45172 100644
--- a/test-framework/junit5/src/main/java/org/apache/camel/quarkus/test/AfterAllCallback.java
+++ b/test-framework/junit5/src/main/java/org/apache/camel/quarkus/test/AfterAllCallback.java
@@ -18,6 +18,7 @@ package org.apache.camel.quarkus.test;
import io.quarkus.test.junit.callback.QuarkusTestAfterAllCallback;
import io.quarkus.test.junit.callback.QuarkusTestContext;
+import org.junit.jupiter.api.extension.ExtensionContext;
public class AfterAllCallback implements QuarkusTestAfterAllCallback {
@@ -27,7 +28,10 @@ public class AfterAllCallback implements QuarkusTestAfterAllCallback {
CamelQuarkusTestSupport testInstance = (CamelQuarkusTestSupport) context.getTestInstance();
if (CallbackUtil.isPerClass(testInstance)) {
- testInstance.internalAfterAll(context);
+ ExtensionContext mockContext = new CallbackUtil.MockExtensionContext(CallbackUtil.getLifecycle(testInstance),
+ null);
+
+ testInstance.internalAfterAll(context, mockContext);
CallbackUtil.resetContext(testInstance);
}
diff --git a/test-framework/junit5/src/main/java/org/apache/camel/quarkus/test/CamelQuarkusTestSupport.java b/test-framework/junit5/src/main/java/org/apache/camel/quarkus/test/CamelQuarkusTestSupport.java
index 9c02b5162c..b37f5b4fc4 100644
--- a/test-framework/junit5/src/main/java/org/apache/camel/quarkus/test/CamelQuarkusTestSupport.java
+++ b/test-framework/junit5/src/main/java/org/apache/camel/quarkus/test/CamelQuarkusTestSupport.java
@@ -281,10 +281,15 @@ public class CamelQuarkusTestSupport extends CamelTestSupport
}
}
- void internalAfterAll(QuarkusTestContext context) {
+ void internalAfterAll(QuarkusTestContext context, ExtensionContext extensionContext) {
try {
- doPostTearDown();
+ if (isCreateCamelContextPerClass()) {
+ super.afterAll(extensionContext);
+ } else {
+ doPostTearDown();
+ }
cleanupResources();
+
} catch (Exception e) {
// ignore
}
diff --git a/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/common/CallbacksPerTestFalse02Test.java b/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/common/CallbacksPerTestFalse02Test.java
index 9bb7834a79..cfd85fff3e 100644
--- a/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/common/CallbacksPerTestFalse02Test.java
+++ b/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/common/CallbacksPerTestFalse02Test.java
@@ -24,7 +24,7 @@ import org.junit.jupiter.api.Test;
import static org.awaitility.Awaitility.await;
-// replaces CreateCamelContextPerTestTrueTest
+// requires CallbacksPerTestFalse01Test to be run before
@QuarkusTest
public class CallbacksPerTestFalse02Test {
diff --git a/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/common/CallbacksPerTestTrue02Test.java b/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/common/CallbacksPerTestTrue02Test.java
index 472d5d319f..9bcf600cdb 100644
--- a/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/common/CallbacksPerTestTrue02Test.java
+++ b/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/common/CallbacksPerTestTrue02Test.java
@@ -24,7 +24,7 @@ import org.junit.jupiter.api.Test;
import static org.awaitility.Awaitility.await;
-// replaces CreateCamelContextPerTestTrueTest
+// requires CallbacksPerTestTrue01Test to be run before
@QuarkusTest
public class CallbacksPerTestTrue02Test {
diff --git a/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/userTestCases/AdviceInDoBeforeEachMethodsTest.java b/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/userTestCases/AdviceInDoBeforeEachMethodsTest.java
index b29c0aa9ef..ae5b16d6eb 100644
--- a/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/userTestCases/AdviceInDoBeforeEachMethodsTest.java
+++ b/test-framework/junit5/src/test/java/org/apache/camel/quarkus/test/userTestCases/AdviceInDoBeforeEachMethodsTest.java
@@ -51,7 +51,7 @@ public class AdviceInDoBeforeEachMethodsTest extends CamelQuarkusTestSupport {
public void configure() {
from("direct:start")
.routeId("sampleRoute")
- .to("file:samples/");
+ .to("file:target/samples/");
}
};
}