Skip to content

Commit

Permalink
Sync working groups
Browse files Browse the repository at this point in the history
  • Loading branch information
actions-user committed Nov 18, 2024
1 parent 5cc5a81 commit 37184a0
Showing 1 changed file with 24 additions and 18 deletions.
42 changes: 24 additions & 18 deletions _data/wg.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,29 @@
---
working-groups:
- title: "Test classloading"
board-url: "https://github.com/orgs/quarkusio/projects/30"
short-description: The goal of this working group is to rewrite Quarkus's test classloading, so that tests are run in the same classloader as the application under tests, and Quarkus extensions can do "Quarkus-y" manipulations of test classes.
readme: |
<p>At the moment, Quarkus tests are invoked using one classloader, and then executed in a different classloader. This mostly works well, but means some use cases don't work: extensions cannot manipulate test classes in the same way that they do normal application classes. For example, anything run via a JUnit @TestTemplate test case will see the un-transformed class.</p>
<p>It also means we have extra user-facing complexity, such as the QuarkusTest*Callbacks](https://quarkus.io/guides/getting-started-testing#enrichment-via-quarkustestcallback):</p>
<blockquote>
<p>While it is possible to use JUnit Jupiter callback interfaces like BeforeEachCallback, you might run into classloading issues because Quarkus has to run tests in a custom classloader which JUnit is not aware of.</p>
</blockquote>
<p>A final benefit is a reduction in the internal complexity of our code. Hopping between classloaders during test execution takes a lot of work, and adds a lot of code! It also is brittle in places. For example, because the hop between classloaders relies on serialization in some cases, it's becoming harder to do as the JVM tightens up security restrictions. We used to rely on xstream, but that stopped working in Java 17. In https://github.com/quarkusio/quarkus/pull/40601, @dmlloyd moved us to use the JBoss Serializer, which works better, but might still be affected by future restrictions on class access.</p>
<p>The goal of this working group is to allow test classes to fully participate in the 'quarkification' of classes. The mechanism for this is probably just to load the test classes with the classloader we intend to run them with, so that JUnit sees the 'correct' version of the class.</p>
<ul>
<li>Point of contact: @holly-cummins (@<strong>Holly Cummins</strong> on Zulip)</li>
<li>Discussion: <a href="https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/">Zulip topic</a></li>
</ul>
status: on track
completed: false
last-activity: 2024-11-18
last-update: |
A few pre-existing issues have been added to this project, since we're pretty confident the rewrite will either fix them, or unlock the next step for the fix.
Progress on the main work item has been delayed by conferences!
point-of-contact: "@holly-cummins (@<strong>Holly Cummins</strong> on Zulip)"
discussion: <a href="https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/">Zulip topic</a>
- title: "Roq :: Quarkus SSG"
board-url: "https://github.com/orgs/quarkiverse/projects/6"
short-description: Allow Static Site Generation with Quarkus.
Expand Down Expand Up @@ -96,24 +120,6 @@ working-groups:
Everything is fine for now.
There are discussions on defining a regular cadence release. We will communicate when we have more details.
- title: "Test classloading"
board-url: "https://github.com/orgs/quarkusio/projects/30"
short-description: The goal of this working group is to rewrite Quarkus's test classloading, so that tests are run in the same classloader as the application under tests, and Quarkus extensions can do "Quarkus-y" manipulations of test classes.
readme: |
<p>At the moment, Quarkus tests are invoked using one classloader, and then executed in a different classloader. This mostly works well, but means some use cases don't work: extensions cannot manipulate test classes in the same way that they do normal application classes. For example, anything run via a JUnit @TestTemplate test case will see the un-transformed class.</p>
<p>It also means we have extra user-facing complexity, such as the QuarkusTest*Callbacks](https://quarkus.io/guides/getting-started-testing#enrichment-via-quarkustestcallback):</p>
<blockquote>
<p>While it is possible to use JUnit Jupiter callback interfaces like BeforeEachCallback, you might run into classloading issues because Quarkus has to run tests in a custom classloader which JUnit is not aware of.</p>
</blockquote>
<p>A final benefit is a reduction in the internal complexity of our code. Hopping between classloaders during test execution takes a lot of work, and adds a lot of code! It also is brittle in places. For example, because the hop between classloaders relies on serialization in some cases, it's becoming harder to do as the JVM tightens up security restrictions. We used to rely on xstream, but that stopped working in Java 17. In https://github.com/quarkusio/quarkus/pull/40601, @dmlloyd moved us to use the JBoss Serializer, which works better, but might still be affected by future restrictions on class access.</p>
<p>The goal of this working group is to allow test classes to fully participate in the 'quarkification' of classes. The mechanism for this is probably just to load the test classes with the classloader we intend to run them with, so that JUnit sees the 'correct' version of the class.</p>
status: on track
completed: false
last-activity: 2024-11-07
last-update: |
A few pre-existing issues have been added to this project, since we're pretty confident the rewrite will either fix them, or unlock the next step for the fix.
Progress on the main work item has been delayed by conferences!
- title: "Docker file generation"
board-url: "https://github.com/orgs/quarkusio/projects/27"
short-description: A working group focusing on the generation of Dockerfile / ContainerFile
Expand Down

0 comments on commit 37184a0

Please sign in to comment.