Details
-
Type:
New Feature
-
Status: Open (View Workflow)
-
Priority:
Critical
-
Resolution: Unresolved
-
Component/s: jenkins-test-harness
-
Labels:
-
Similar Issues:
Description
JenkinsRule-based tests generally load not only Jenkins core but also all plugins from ${java.class.path}, i.e., the Maven test-scoped classpath. This is convenient in some ways but also means that class loading is done in a very different way than in an actual production instance, or even mvn hpi:run, making it very hard to test changes like JENKINS-26192 without using the much clunkier, slower, and flakier acceptance-test-harness. It also means that we are forever fighting with Maven's weird transitive dependency management (JENKINS-41631, JENKINS-39301, etc.).
There should be an option to run JenkinsRule in a mode whereby the test classpath is only used to load Jetty; Jenkins core and its WEB-INF/lib/*.jar (including modules!) is loaded in a derivative class loader; and then plugins are discovered from the test classpath, transitive dependencies computed and verified, and finally loaded in the real plugin class loader (probably using *.jpl files to allow us to still load from unpacked development trees). Finally, the test suite itself needs to be reloaded in a fresh loader parented to UberClassLoader, and executed from there.
NbModuleSuite demonstrates the concept, though the details would be rather different for Jenkins.
There are a lot of details to be checked, such as
- @TestExtension handling
- PluginWorkspaceMap support for coördinated snapshot development
- moving InjectedTest from HudsonTestCase so that it can use the new mode
Attachments
Issue Links
- blocks
-
JENKINS-5303 Upgrade Acegi Security to the latest Spring Security release
-
- Fixed but Unreleased
-
- causes
-
JENKINS-62776 NoClassDefFoundErrors after updating
-
- Resolved
-
- is blocking
-
JENKINS-50520 Remove jClouds shading
-
- Resolved
-
- relates to
-
JENKINS-31068 The reverse proxy monitor doesn't verify anymore if org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true on Tomcat
-
- Resolved
-
-
JENKINS-48357 Binary Compatibility between JIRA Plugin and Apache HttpComponents Client 4.x API
-
- Closed
-
-
JENKINS-46754 2.73+ SSH agent sometimes will not start if using passphrase-protected ed25519 key
-
- Closed
-
-
JENKINS-19508 Replace @Extension(optional=true) and optional dependencies with bridge plugins
-
- Open
-
-
JENKINS-41631 Use requireUpperBoundDeps in plugin POM
-
- Resolved
-
-
JENKINS-39301 During test executions optional transitive plugin dependencies don't get correctly loaded
-
- Resolved
-
-
JENKINS-26579 j:getStatic/invokeStatic does not work on plugin classes
-
- Open
-
-
JENKINS-61007 pipeline-model-definition is using findbugs without providing / depending on it
-
- Resolved
-
-
JENKINS-51779 Use of beta Guava method since deleted: Iterators.skip
-
- Resolved
-
-
JENKINS-30685 Hide core dependencies in plugin classpath
-
- Open
-
- links to
Activity
Field | Original Value | New Value |
---|---|---|
Link |
This issue relates to |
Link |
This issue relates to |
Assignee | Oliver Gondža [ olivergondza ] |
Link | This issue relates to JENKINS-30685 [ JENKINS-30685 ] |
Link |
This issue relates to |
Link | This issue relates to JENKINS-26579 [ JENKINS-26579 ] |
Link |
This issue relates to |
Remote Link | This issue links to "CloudBees Internal OSS-1951 (Web Link)" [ 18497 ] |
Labels | classloader testing | classloader essentials testing |
Link |
This issue is related to |
Link |
This issue relates to |
Link |
This issue is related to |
Link |
This issue is blocking |
Link |
This issue relates to |
Labels | classloader essentials testing | classloader essentials evergreen testing |
Labels | classloader essentials evergreen testing | classloader evergreen testing |
Link |
This issue relates to |
Link | This issue relates to JENKINS-19508 [ JENKINS-19508 ] |
Link |
This issue causes |
Link |
This issue blocks |