-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from bvn13/feature/performance-test
Benchmarking
- Loading branch information
Showing
11 changed files
with
384 additions
and
48 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<parent> | ||
<groupId>me.bvn13.openfeign.logger</groupId> | ||
<artifactId>feign-normalized-logger</artifactId> | ||
<version>0.2.1-SNAPSHOT</version> | ||
</parent> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<groupId>me.bvn13.openfeign.logger.test</groupId> | ||
<artifactId>logger-testing</artifactId> | ||
|
||
<properties> | ||
<maven.compiler.source>17</maven.compiler.source> | ||
<maven.compiler.target>17</maven.compiler.target> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
</properties> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>me.bvn13.openfeign.logger</groupId> | ||
<artifactId>feign-normalized-logger</artifactId> | ||
<version>0.2.1-SNAPSHOT</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.slf4j</groupId> | ||
<artifactId>slf4j-api</artifactId> | ||
<version>${slf4j.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.slf4j</groupId> | ||
<artifactId>slf4j-jdk14</artifactId> | ||
<version>${slf4j.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.junit.jupiter</groupId> | ||
<artifactId>junit-jupiter-engine</artifactId> | ||
<version>${junit.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.eclipse.jetty</groupId> | ||
<artifactId>jetty-server</artifactId> | ||
<version>${jetty-server.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.eclipse.jetty</groupId> | ||
<artifactId>jetty-servlet</artifactId> | ||
<version>${jetty-server.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.openjdk.jmh</groupId> | ||
<artifactId>jmh-core</artifactId> | ||
<version>${jmh.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.openjdk.jmh</groupId> | ||
<artifactId>jmh-generator-annprocess</artifactId> | ||
<version>${jmh.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.github.openfeign</groupId> | ||
<artifactId>feign-core</artifactId> | ||
<version>${feign.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.github.openfeign</groupId> | ||
<artifactId>feign-gson</artifactId> | ||
<version>${feign.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.github.openfeign</groupId> | ||
<artifactId>feign-slf4j</artifactId> | ||
<version>${feign.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>me.bvn13.openfeign.logger</groupId> | ||
<artifactId>logger</artifactId> | ||
<version>0.2.1-SNAPSHOT</version> | ||
<scope>test</scope> | ||
</dependency> | ||
</dependencies> | ||
|
||
</project> |
107 changes: 107 additions & 0 deletions
107
...rc/test/java/me/bvn13/openfeign/logger/normalized/NormalizedFeignLoggerBenchmarkTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
package me.bvn13.openfeign.logger.normalized; | ||
|
||
import feign.Feign; | ||
import feign.Logger; | ||
import feign.gson.GsonDecoder; | ||
import feign.slf4j.Slf4jLogger; | ||
import org.junit.jupiter.api.Assertions; | ||
import org.openjdk.jmh.annotations.Benchmark; | ||
import org.openjdk.jmh.annotations.Scope; | ||
import org.openjdk.jmh.annotations.Setup; | ||
import org.openjdk.jmh.annotations.State; | ||
import org.openjdk.jmh.annotations.TearDown; | ||
import org.openjdk.jmh.annotations.Warmup; | ||
|
||
import static me.bvn13.openfeign.logger.normalized.TestJettyServer.PORT; | ||
|
||
public class NormalizedFeignLoggerBenchmarkTest { | ||
@State(Scope.Benchmark) | ||
public static class BenchmarkStateWithoutLogging { | ||
TestJettyServer jettyServer; | ||
TestFeignClient feignClient; | ||
|
||
@Setup | ||
public void init() { | ||
jettyServer = new TestJettyServer(); | ||
jettyServer.start(); | ||
feignClient = Feign.builder() | ||
.decoder(new GsonDecoder()) | ||
.target(TestFeignClient.class, "http://localhost:" + PORT); | ||
} | ||
|
||
@TearDown | ||
public void tearDown() { | ||
jettyServer.stop(); | ||
} | ||
} | ||
|
||
@State(Scope.Benchmark) | ||
public static class BenchmarkStateWithSlf4jLogging { | ||
TestJettyServer jettyServer; | ||
TestFeignClient feignClient; | ||
|
||
@Setup | ||
public void init() { | ||
jettyServer = new TestJettyServer(); | ||
jettyServer.start(); | ||
feignClient = Feign.builder() | ||
.logger(new Slf4jLogger()) | ||
.logLevel(Logger.Level.FULL) | ||
.decoder(new GsonDecoder()) | ||
.target(TestFeignClient.class, "http://localhost:" + PORT); | ||
} | ||
|
||
@TearDown | ||
public void tearDown() { | ||
jettyServer.stop(); | ||
} | ||
} | ||
|
||
@State(Scope.Benchmark) | ||
public static class BenchmarkStateWithNormalizedLogging { | ||
TestJettyServer jettyServer; | ||
TestFeignClient feignClient; | ||
|
||
@Setup | ||
public void init() { | ||
jettyServer = new TestJettyServer(); | ||
jettyServer.start(); | ||
feignClient = Feign.builder() | ||
.logger(new NormalizedFeignLogger()) | ||
.logLevel(Logger.Level.FULL) | ||
.decoder(new GsonDecoder()) | ||
.target(TestFeignClient.class, "http://localhost:" + PORT); | ||
} | ||
|
||
@TearDown | ||
public void tearDown() { | ||
jettyServer.stop(); | ||
} | ||
} | ||
|
||
@Benchmark | ||
@Warmup(iterations = 3) | ||
public void testFeignLogger(BenchmarkStateWithoutLogging benchmarkState) { | ||
final ResponseDto status = benchmarkState.feignClient.getStatus(); | ||
Assertions.assertEquals("ok", status.getStatus()); | ||
} | ||
|
||
@Benchmark | ||
@Warmup(iterations = 3) | ||
public void testSlf4jFeignLogger(BenchmarkStateWithSlf4jLogging benchmarkState) { | ||
final ResponseDto status = benchmarkState.feignClient.getStatus(); | ||
Assertions.assertEquals("ok", status.getStatus()); | ||
} | ||
|
||
@Benchmark | ||
@Warmup(iterations = 3) | ||
public void testNormalizedFeignLogger(BenchmarkStateWithNormalizedLogging benchmarkState) { | ||
final ResponseDto status = benchmarkState.feignClient.getStatus(); | ||
Assertions.assertEquals("ok", status.getStatus()); | ||
} | ||
|
||
public static void main(String[] args) throws Exception { | ||
org.openjdk.jmh.Main.main(args); | ||
} | ||
|
||
} |
15 changes: 15 additions & 0 deletions
15
logger-testing/src/test/java/me/bvn13/openfeign/logger/normalized/ResponseDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package me.bvn13.openfeign.logger.normalized; | ||
|
||
public class ResponseDto { | ||
|
||
private String status; | ||
|
||
public String getStatus() { | ||
return status; | ||
} | ||
|
||
public ResponseDto setStatus(String status) { | ||
this.status = status; | ||
return this; | ||
} | ||
} |
19 changes: 19 additions & 0 deletions
19
logger-testing/src/test/java/me/bvn13/openfeign/logger/normalized/TestBlockingServlet.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package me.bvn13.openfeign.logger.normalized; | ||
|
||
import jakarta.servlet.ServletException; | ||
import jakarta.servlet.http.HttpServlet; | ||
import jakarta.servlet.http.HttpServletRequest; | ||
import jakarta.servlet.http.HttpServletResponse; | ||
|
||
import java.io.IOException; | ||
|
||
public class TestBlockingServlet extends HttpServlet { | ||
|
||
protected void doGet(HttpServletRequest request, | ||
HttpServletResponse response) throws ServletException, IOException { | ||
response.setContentType("application/json"); | ||
response.setStatus(HttpServletResponse.SC_OK); | ||
response.getWriter().println("{ \"status\": \"ok\"}"); | ||
} | ||
|
||
} |
11 changes: 11 additions & 0 deletions
11
logger-testing/src/test/java/me/bvn13/openfeign/logger/normalized/TestFeignClient.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package me.bvn13.openfeign.logger.normalized; | ||
|
||
|
||
import feign.RequestLine; | ||
|
||
public interface TestFeignClient { | ||
|
||
@RequestLine("GET /status") | ||
ResponseDto getStatus(); | ||
|
||
} |
51 changes: 51 additions & 0 deletions
51
logger-testing/src/test/java/me/bvn13/openfeign/logger/normalized/TestJettyServer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
package me.bvn13.openfeign.logger.normalized; | ||
|
||
import org.eclipse.jetty.server.Connector; | ||
import org.eclipse.jetty.server.Server; | ||
import org.eclipse.jetty.server.ServerConnector; | ||
import org.eclipse.jetty.servlet.ServletHandler; | ||
|
||
public class TestJettyServer { | ||
|
||
public static final int PORT = 8090; | ||
private Server server; | ||
|
||
public TestJettyServer() { | ||
server = new Server(); | ||
ServerConnector connector = new ServerConnector(server); | ||
connector.setPort(PORT); | ||
server.setConnectors(new Connector[] {connector}); | ||
} | ||
|
||
public void start() { | ||
ServletHandler servletHandler = new ServletHandler(); | ||
server.setHandler(servletHandler); | ||
servletHandler.addServletWithMapping(TestBlockingServlet.class, "/status"); | ||
new Thread(() -> { | ||
try { | ||
server.start(); | ||
} catch (Exception e) { | ||
throw new RuntimeException(e); | ||
} | ||
}).start(); | ||
} | ||
|
||
public void stop() { | ||
try { | ||
server.stop(); | ||
} catch (Exception e) { | ||
throw new RuntimeException(e); | ||
} | ||
} | ||
|
||
public static void main(String[] args) { | ||
TestJettyServer jettyServer; | ||
jettyServer = new TestJettyServer(); | ||
try { | ||
jettyServer.start(); | ||
} catch (Exception e) { | ||
throw new RuntimeException(e); | ||
} | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<parent> | ||
<groupId>me.bvn13.openfeign.logger</groupId> | ||
<artifactId>feign-normalized-logger</artifactId> | ||
<version>0.2.1-SNAPSHOT</version> | ||
</parent> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<artifactId>logger</artifactId> | ||
|
||
<properties> | ||
<maven.compiler.source>1.8</maven.compiler.source> | ||
<maven.compiler.target>1.8</maven.compiler.target> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
</properties> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>io.github.openfeign</groupId> | ||
<artifactId>feign-core</artifactId> | ||
<version>${feign.version}</version> | ||
<scope>provided</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.slf4j</groupId> | ||
<artifactId>slf4j-api</artifactId> | ||
<version>${slf4j.version}</version> | ||
<scope>provided</scope> | ||
</dependency> | ||
</dependencies> | ||
|
||
</project> |
Oops, something went wrong.