From cee2185b82c17f77024603446f69e0b59b82e421 Mon Sep 17 00:00:00 2001 From: Jorge Bescos Gascon Date: Mon, 29 Aug 2022 13:56:43 +0200 Subject: [PATCH 1/2] Fix test issues Signed-off-by: Jorge Bescos Gascon --- .../jdk/connector/internal/StressTest.java | 87 ------------------- .../MonitoringEventListenerTest.java | 29 ++++--- 2 files changed, 18 insertions(+), 98 deletions(-) delete mode 100644 connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal/StressTest.java diff --git a/connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal/StressTest.java b/connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal/StressTest.java deleted file mode 100644 index ed43c080c7..0000000000 --- a/connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal/StressTest.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v. 2.0, which is available at - * http://www.eclipse.org/legal/epl-2.0. - * - * This Source Code may also be made available under the following Secondary - * Licenses when the conditions for such availability set forth in the - * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, - * version 2 with the GNU Classpath Exception, which is available at - * https://www.gnu.org/software/classpath/license.html. - * - * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - */ - -package org.glassfish.jersey.jdk.connector.internal; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.core.Application; -import javax.ws.rs.core.Response; - -import org.glassfish.jersey.client.ClientConfig; -import org.glassfish.jersey.internal.guava.ThreadFactoryBuilder; -import org.glassfish.jersey.jdk.connector.JdkConnectorProvider; -import org.glassfish.jersey.server.ResourceConfig; -import org.glassfish.jersey.test.JerseyTest; -import org.glassfish.jersey.test.TestProperties; -import org.junit.Test; - -public class StressTest extends JerseyTest { - - private static final int PARALLELISM = 50; - private static final int ITERATIONS = 1000; - - @Path("/test") - public static class TestResource { - - @GET - public String test() { - return "test"; - } - } - - @Override - protected Application configure() { - enable(TestProperties.LOG_TRAFFIC); - enable(TestProperties.DUMP_ENTITY); - return new ResourceConfig(TestResource.class); - } - - @Override - protected void configureClient(ClientConfig config) { - config.connectorProvider(new JdkConnectorProvider()); - } - - @Test - public void randomnessStatus200() throws InterruptedException, ExecutionException { - ExecutorService executor = Executors.newFixedThreadPool(PARALLELISM, - new ThreadFactoryBuilder().setNameFormat("client-%d").build()); - for (int i = 0; i < ITERATIONS; i++) { - System.out.println("Iteration " + i); - List> responses = new ArrayList<>(); - for (int j = 0; j < 100; j++) { - Future future = executor.submit(() -> target("/test").request().get()); - responses.add(future); - } - for (Future response : responses) { - assertEquals(200, response.get().getStatus()); - } - } - executor.shutdown(); - assertTrue(executor.awaitTermination(10, TimeUnit.SECONDS)); - } -} diff --git a/tests/integration/jersey-4697/src/test/java/org/glassfish/jersey/tests/integration/jersey4697/MonitoringEventListenerTest.java b/tests/integration/jersey-4697/src/test/java/org/glassfish/jersey/tests/integration/jersey4697/MonitoringEventListenerTest.java index 578d96442d..f5a05985a3 100644 --- a/tests/integration/jersey-4697/src/test/java/org/glassfish/jersey/tests/integration/jersey4697/MonitoringEventListenerTest.java +++ b/tests/integration/jersey-4697/src/test/java/org/glassfish/jersey/tests/integration/jersey4697/MonitoringEventListenerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -16,13 +16,17 @@ package org.glassfish.jersey.tests.integration.jersey4697; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; import java.lang.management.ManagementFactory; +import java.lang.management.ThreadInfo; +import java.lang.management.ThreadMXBean; import java.lang.reflect.Method; +import java.util.Arrays; import java.util.Collection; import java.util.Map; +import java.util.stream.Collectors; import javax.inject.Inject; import javax.management.JMX; @@ -48,11 +52,12 @@ import org.glassfish.jersey.test.JerseyTest; import org.junit.Test; -import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class MonitoringEventListenerTest extends JerseyTest { - private static final long TIMEOUT = 500; + private static final long TIMEOUT = 1000; private static final String MBEAN_EXCEPTION = "org.glassfish.jersey:type=MonitoringEventListenerTest,subType=Global,exceptions=ExceptionMapper"; @@ -116,6 +121,7 @@ protected Application configure() { resourceConfig.property(ServerProperties.MONITORING_ENABLED, true); resourceConfig.property(ServerProperties.MONITORING_STATISTICS_ENABLED, true); resourceConfig.property(ServerProperties.MONITORING_STATISTICS_MBEANS_ENABLED, true); + // Scheduler will process 1000 events per second resourceConfig.property(ServerProperties.MONITORING_STATISTICS_REFRESH_INTERVAL, 1); resourceConfig.setApplicationName("MonitoringEventListenerTest"); return resourceConfig; @@ -126,17 +132,18 @@ public void exceptionInScheduler() throws Exception { final Long ERRORS_BEFORE_FAIL = 10L; // Send some requests to process some statistics. request(ERRORS_BEFORE_FAIL); - // Give some time to the scheduler to collect data. + // Give some time to process events Thread.sleep(TIMEOUT); - // All events were consumed by scheduler + // Verify the exceptionMapperEvents is empty, because no event of this type was sent yet queueIsEmpty(); - // Make the scheduler to fail. No more statistics are collected. + // Sending one event that will make an internal error in the scheduler. + // No new events will be pushed in the queues after this. makeFailure(); - // Sending again requests + // Sending again requests. These events will not be processed, so they will not be counted for statistics. request(20); + // The expectation is that the scheduler is not going to process previous events because there was a failure before. + // We give some time before checking that no new errors are registered. Thread.sleep(TIMEOUT); - // No new events should be accepted because scheduler is not working. - queueIsEmpty(); Long monitoredErrors = mappedErrorsFromJMX(MBEAN_EXCEPTION); assertEquals(ERRORS_BEFORE_FAIL, monitoredErrors); } From f2361739173528e5f21c556a9ded9cb35a0313bb Mon Sep 17 00:00:00 2001 From: Jorge Bescos Gascon Date: Fri, 2 Sep 2022 13:30:30 +0200 Subject: [PATCH 2/2] Cleanup imports Signed-off-by: Jorge Bescos Gascon --- .../jersey4697/MonitoringEventListenerTest.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/tests/integration/jersey-4697/src/test/java/org/glassfish/jersey/tests/integration/jersey4697/MonitoringEventListenerTest.java b/tests/integration/jersey-4697/src/test/java/org/glassfish/jersey/tests/integration/jersey4697/MonitoringEventListenerTest.java index f5a05985a3..308d34215a 100644 --- a/tests/integration/jersey-4697/src/test/java/org/glassfish/jersey/tests/integration/jersey4697/MonitoringEventListenerTest.java +++ b/tests/integration/jersey-4697/src/test/java/org/glassfish/jersey/tests/integration/jersey4697/MonitoringEventListenerTest.java @@ -16,17 +16,13 @@ package org.glassfish.jersey.tests.integration.jersey4697; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.lang.management.ManagementFactory; -import java.lang.management.ThreadInfo; -import java.lang.management.ThreadMXBean; import java.lang.reflect.Method; -import java.util.Arrays; import java.util.Collection; import java.util.Map; -import java.util.stream.Collectors; import javax.inject.Inject; import javax.management.JMX; @@ -52,8 +48,7 @@ import org.glassfish.jersey.test.JerseyTest; import org.junit.Test; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.junit.Assert.assertEquals; public class MonitoringEventListenerTest extends JerseyTest {