Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WFLY-19351] Add Micrometer test to verify that applications with shared metrics names are not merged when exported #17898

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

jasondlee
Copy link
Contributor

@jasondlee jasondlee commented May 20, 2024

https://issues.redhat.com/browse/WFLY-19351

Add test with multiple war deployments
Add test with ear with multiple war subdeployments
Rework how Prometheus metrics are retrieved and handled
Add test to verify that metrics with identical names are exported separately


More information about the wildfly-bot[bot]

Copy link
Contributor

@bstansberry bstansberry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jasondlee I made a bunch of code style comments but the substantive change LGTM.

@jasondlee
Copy link
Contributor Author

@jasondlee I made a bunch of code style comments but the substantive change LGTM.

Thanks. I'll get these updated as soon as I can.

@jasondlee
Copy link
Contributor Author

@bstansberry All changes should be address 'cept for the import order. Those have been updated, but I'll wait to resolve those until I can confirm I have the right order. :)

bstansberry
bstansberry previously approved these changes Jun 13, 2024
@bstansberry bstansberry dismissed their stale review June 21, 2024 15:54

@jasondlee I'm withdrawing my approval because the tests are failing.

@jasondlee
Copy link
Contributor Author

@jasondlee I'm withdrawing my approval because the tests are failing.

@bstansberry You're so picky. :) I've been reworking the tests so they should be more stable. Will be pushing an update "soon"

@jasondlee jasondlee force-pushed the WFLY-19351 branch 4 times, most recently from 496bc27 to 8bd50a0 Compare June 25, 2024 01:36
Copy link
Contributor

@bstansberry bstansberry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jasondlee There are new missing header issues and import reordering issues.

@bstansberry bstansberry added the hold PR should not be merged for some reason. label Jun 28, 2024
Copy link
Contributor

@bstansberry bstansberry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@darranl This LGTM but I put the 'hold' label on it with the idea that until we tag 33 Beta you can decide whether to merge or let it wait for the tag.

@jasondlee Until merged, perhaps do a retest every now and then

@jasondlee jasondlee force-pushed the WFLY-19351 branch 2 times, most recently from 96638c1 to 94b7b78 Compare July 2, 2024 13:50
@bstansberry bstansberry added 33.x WildFly 33 and removed hold PR should not be merged for some reason. labels Jul 9, 2024
import org.wildfly.test.integration.observability.micrometer.multiple.application.TestApplication;

public class MultipleWarTestCase extends BaseMultipleTestCase {
@Deployment(name = SERVICE_ONE, order = 1)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add 'testable=false' to this to avoid this stuff in the logs:

2024-07-09 19:14:48,680 WARN  [org.jboss.modules.define] (Weld Thread Pool -- 2) Failed to define class org.wildfly.test.integration.observability.micrometer.multiple.MultipleWarTestCase in Module "deployment.service-one.war" from Service Module Loader: java.lang.NoClassDefFoundError: Failed to link org/wildfly/test/integration/observability/micrometer/multiple/MultipleWarTestCase (Module "deployment.service-one.war" from Service Module Loader): org/wildfly/test/integration/observability/micrometer/multiple/BaseMultipleTestCase
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1022)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1101)
	at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:351)
	at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:482)
	at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:276)
	at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:79)
	at org.jboss.modules.Module.loadModuleClass(Module.java:798)
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:192)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:408)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:396)
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:115)
	at org.jboss.as.weld@33.0.0.Final-SNAPSHOT//org.jboss.as.weld.WeldModuleResourceLoader.classForName(WeldModuleResourceLoader.java:51)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.bootstrap.AnnotatedTypeLoader.loadClass(AnnotatedTypeLoader.java:86)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.bootstrap.AnnotatedTypeLoader.loadAnnotatedType(AnnotatedTypeLoader.java:65)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.bootstrap.FastAnnotatedTypeLoader.loadAnnotatedType(FastAnnotatedTypeLoader.java:112)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.bootstrap.BeanDeployer.addClass(BeanDeployer.java:87)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.bootstrap.ConcurrentBeanDeployer$1.doWork(ConcurrentBeanDeployer.java:55)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.bootstrap.ConcurrentBeanDeployer$1.doWork(ConcurrentBeanDeployer.java:52)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:62)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:55)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
	at org.jboss.threads@2.4.0.Final//org.jboss.threads.JBossThread.run(JBossThread.java:513)
Caused by: java.lang.ClassNotFoundException: org.wildfly.test.integration.observability.micrometer.multiple.BaseMultipleTestCase from [Module "deployment.service-one.war" from Service Module Loader]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:200)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:408)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:396)
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:115)
	... 26 more


}

@Deployment(name = SERVICE_TWO, order = 2)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add 'testable=false' to this to avoid this stuff in the logs:

2024-07-09 19:14:49,030 WARN  [org.jboss.modules.define] (Weld Thread Pool -- 2) Failed to define class org.wildfly.test.integration.observability.micrometer.multiple.MultipleWarTestCase in Module "deployment.service-two.war" from Service Module Loader: java.lang.NoClassDefFoundError: Failed to link org/wildfly/test/integration/observability/micrometer/multiple/MultipleWarTestCase (Module "deployment.service-two.war" from Service Module Loader): org/wildfly/test/integration/observability/micrometer/multiple/BaseMultipleTestCase
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1022)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1101)
	at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:351)
	at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:482)
	at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:276)
	at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:79)
	at org.jboss.modules.Module.loadModuleClass(Module.java:798)
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:192)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:408)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:396)
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:115)
	at org.jboss.as.weld@33.0.0.Final-SNAPSHOT//org.jboss.as.weld.WeldModuleResourceLoader.classForName(WeldModuleResourceLoader.java:51)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.bootstrap.AnnotatedTypeLoader.loadClass(AnnotatedTypeLoader.java:86)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.bootstrap.AnnotatedTypeLoader.loadAnnotatedType(AnnotatedTypeLoader.java:65)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.bootstrap.FastAnnotatedTypeLoader.loadAnnotatedType(FastAnnotatedTypeLoader.java:112)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.bootstrap.BeanDeployer.addClass(BeanDeployer.java:87)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.bootstrap.ConcurrentBeanDeployer$1.doWork(ConcurrentBeanDeployer.java:55)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.bootstrap.ConcurrentBeanDeployer$1.doWork(ConcurrentBeanDeployer.java:52)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:62)
	at org.jboss.weld.core@5.1.2.Final//org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:55)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
	at org.jboss.threads@2.4.0.Final//org.jboss.threads.JBossThread.run(JBossThread.java:513)
Caused by: java.lang.ClassNotFoundException: org.wildfly.test.integration.observability.micrometer.multiple.BaseMultipleTestCase from [Module "deployment.service-two.war" from Service Module Loader]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:200)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:408)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:396)
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:115)
	... 26 more

…red metrics names are not merged when exported

Add test with multiple war deployments
Add test with ear with multiple war subdeployments
Rework how Prometheus metrics are retrieved and handled
Add test to verify that metrics with identical names are exported separately
Add a TestEnricher to manage lifecycle and injection of the Otel container
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
33.x WildFly 33
Projects
None yet
2 participants