Skip to content

Commit

Permalink
Jersey v3.1.5 and jetty update v12.0.5
Browse files Browse the repository at this point in the history
slf4j and log4j minor update
Update test dependencies
More robust concurrent tests
Daily build
mail update
  • Loading branch information
nhenneaux committed Jan 9, 2024
1 parent 4566daf commit bcde29a
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 14 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: Java CI

on: [ push ]
on:
push:
schedule:
- cron: '0 5 */1 * *'

jobs:
build:
Expand Down
16 changes: 8 additions & 8 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@
<sonar.organization>nhenneaux</sonar.organization>
<sonar.host.url>https://sonarcloud.io</sonar.host.url>

<jersey.version>3.1.3</jersey.version>
<jetty.version>12.0.2</jetty.version>
<jakarta.xml.version>4.0.2</jakarta.xml.version>
<jersey.version>3.1.5</jersey.version>
<jetty.version>12.0.5</jetty.version>
<jakarta.xml.version>4.0.4</jakarta.xml.version>
<weld-se-core.version>5.1.2.Final</weld-se-core.version>
<jersey-httpclient-connector.version>1.1.9</jersey-httpclient-connector.version>
</properties>
Expand Down Expand Up @@ -102,12 +102,12 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.9</version>
<version>2.0.11</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.20.0</version>
<version>2.22.1</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
Expand All @@ -125,7 +125,7 @@
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.0</version>
<version>5.10.1</version>
<scope>test</scope>
</dependency>

Expand All @@ -138,7 +138,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>5.4.0</version>
<version>5.8.0</version>
<scope>test</scope>
</dependency>

Expand Down Expand Up @@ -303,7 +303,7 @@
<developers>
<developer>
<name>Nicolas Henneaux</name>
<email>nicolas.henneaux@gmail.com</email>
<email>nicolas@henneaux.io</email>
</developer>
</developers>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,45 @@
import jakarta.ws.rs.client.WebTarget;
import jakarta.ws.rs.core.Response;
import org.glassfish.jersey.client.ClientConfig;
import org.hamcrest.Matchers;
import org.jboss.weld.environment.se.Weld;
import org.jboss.weld.environment.se.WeldContainer;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import org.junit.jupiter.api.*;

import java.io.IOException;
import java.io.InputStream;
import java.net.http.HttpClient;
import java.security.KeyStore;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;

@SuppressWarnings("squid:S00112")
class JettyServerTest {
static final int PORT = 2223;
private static final String PING = "/ping";

@BeforeEach
void setUp(TestInfo testInfo) {
var testClass = testInfo.getTestClass().orElseThrow();
var testMethod = testInfo.getTestMethod().orElseThrow();
System.out.println(testClass.getSimpleName() + "::" + testMethod.getName() + " test has started.");
}

@AfterEach
void tearDown(TestInfo testInfo) {
var testClass = testInfo.getTestClass().orElseThrow();
var testMethod = testInfo.getTestMethod().orElseThrow();
System.out.println(testClass.getSimpleName() + "::" + testMethod.getName() + " test has finished.");
}

private static WebTarget getClient(int port, KeyStore trustStore, ClientConfig clientConfig) {
return ClientBuilder.newBuilder()
.trustStore(trustStore)
Expand Down Expand Up @@ -148,25 +167,32 @@ private void testConcurrent(ClientConfig clientConfig, String method, String pat
long start = System.nanoTime();
for (int i = 0; i < iterations; i++) {
try (Response response = webTarget.request().method(method)) {

response.readEntity(InputStream.class).readAllBytes();
response.getStatus();
counter.incrementAndGet();
int reportEveryRequests = 1_000;
if (i % reportEveryRequests == 0) {
System.out.println(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start) * 1.0 / reportEveryRequests);
start = System.nanoTime();
}
} catch (ProcessingException e) {
} catch (ProcessingException | IOException e) {
if (e.getMessage().contains("GOAWAY")
|| e.getMessage().contains("Broken pipe") // The HTTP sending process failed with error, Broken pipe
|| e.getMessage().contains("EOF reached while reading")
|| e.getMessage().contains(" cancelled")) {// The HTTP sending process failed with error, Stream 673 cancelled
i--;
} else {
throw e;
throw new IllegalStateException(e);
}
}
}
};
Thread.setDefaultUncaughtExceptionHandler((t1, e) -> e.printStackTrace());
List<Throwable> thrown = new ArrayList<>();
Thread.setDefaultUncaughtExceptionHandler((t1, e) -> {
thrown.add(e);
e.printStackTrace();
});
final Set<Thread> threads = IntStream
.range(0, nThreads)
.mapToObj(i -> runnable)
Expand All @@ -180,6 +206,7 @@ private void testConcurrent(ClientConfig clientConfig, String method, String pat
thread.join();
}

assertThat(thrown, Matchers.empty());
assertEquals((long) nThreads * iterations, counter.get());

}
Expand Down

0 comments on commit bcde29a

Please sign in to comment.