Skip to content

Commit afb6d8b

Browse files
committed
Inverno framework test
1 parent e42e57d commit afb6d8b

File tree

19 files changed

+1061
-0
lines changed

19 files changed

+1061
-0
lines changed

frameworks/Java/inverno/README.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# inverno Benchmarking Test
2+
3+
### Test Type Implementation Source Code
4+
5+
* [JSON](src/main/java/com/techempower/inverno/benchmark/internal/Handler.java)
6+
* [PLAINTEXT](src/main/java/com/techempower/inverno/benchmark/internal/Handler.java)
7+
* [DB](src/main/java/com/techempower/inverno/benchmark/internal/Handler.java)
8+
* [QUERY](src/main/java/com/techempower/inverno/benchmark/internal/Handler.java)
9+
* [CACHED QUERY](src/main/java/com/techempower/inverno/benchmark/internal/Handler.java)
10+
* [UPDATE](src/main/java/com/techempower/inverno/benchmark/internal/Handler.java)
11+
* [FORTUNES](src/main/java/com/techempower/inverno/benchmark/internal/Handler.java)
12+
13+
## Important Libraries
14+
The tests were run with:
15+
* [Java OpenJDK 16](https://openjdk.java.net/)
16+
* [Inverno 1.2.1](https://inverno.io)
17+
18+
## Test URLs
19+
### JSON
20+
21+
http://localhost:8080/json
22+
23+
### PLAINTEXT
24+
25+
http://localhost:8080/plaintext
26+
27+
### DB
28+
29+
http://localhost:8080/db
30+
31+
### QUERY
32+
33+
http://localhost:8080/query?queries=
34+
35+
### CACHED QUERY
36+
37+
http://localhost:8080/cached_query?queries=
38+
39+
### UPDATE
40+
41+
http://localhost:8080/update?queries=
42+
43+
### FORTUNES
44+
45+
http://localhost:8080/fortunes
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"framework": "inverno",
3+
"tests": [
4+
{
5+
"default": {
6+
"json_url": "/json",
7+
"plaintext_url": "/plaintext",
8+
"port": 8080,
9+
"approach": "Realistic",
10+
"classification": "Micro",
11+
"database": "None",
12+
"framework": "inverno",
13+
"language": "Java",
14+
"flavor": "None",
15+
"orm": "Micro",
16+
"platform": "Inverno",
17+
"webserver": "None",
18+
"os": "Linux",
19+
"database_os": "Linux",
20+
"display_name": "inverno",
21+
"notes": "",
22+
"versus": "None"
23+
},
24+
"postgres": {
25+
"db_url": "/db",
26+
"query_url": "/queries?queries=",
27+
"fortune_url": "/fortunes",
28+
"update_url": "/updates?queries=",
29+
"port": 8080,
30+
"approach": "Realistic",
31+
"classification": "Micro",
32+
"database": "postgres",
33+
"framework": "inverno",
34+
"language": "Java",
35+
"flavor": "None",
36+
"orm": "Micro",
37+
"platform": "Inverno",
38+
"webserver": "None",
39+
"os": "Linux",
40+
"database_os": "Linux",
41+
"display_name": "inverno",
42+
"notes": "",
43+
"versus": "None"
44+
}
45+
}
46+
]
47+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM maven:3.8.2-openjdk-16 as maven
2+
WORKDIR /inverno
3+
COPY src src
4+
COPY pom.xml pom.xml
5+
RUN mvn package -q
6+
7+
EXPOSE 8080
8+
9+
# CMD [ "target/maven-inverno/application_linux_amd64/inverno-benchmark-1.0.0-SNAPSHOT/bin/inverno-benchmark" ]
10+
CMD export DBIP=`getent hosts tfb-database | awk '{ print $1 }'` && \
11+
target/maven-inverno/application_linux_amd64/inverno-benchmark-1.0.0-SNAPSHOT/bin/inverno-benchmark --com.techempower.inverno.benchmark.appConfiguration.db_host=\"$DBIP\"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FROM maven:3.8.2-openjdk-16 as maven
2+
WORKDIR /inverno
3+
COPY src src
4+
COPY pom.xml pom.xml
5+
RUN mvn package -q
6+
7+
EXPOSE 8080
8+
9+
CMD [ "target/maven-inverno/application_linux_amd64/inverno-benchmark-1.0.0-SNAPSHOT/bin/inverno-benchmark", "--com.techempower.inverno.benchmark.appConfiguration.boot.reactor_prefer_vertx=false" ]

frameworks/Java/inverno/pom.xml

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<parent>
7+
<groupId>io.inverno.dist</groupId>
8+
<artifactId>inverno-parent</artifactId>
9+
<version>1.2.1</version>
10+
</parent>
11+
<groupId>com.techempower</groupId>
12+
<artifactId>inverno-benchmark</artifactId>
13+
<version>1.0.0-SNAPSHOT</version>
14+
<packaging>jar</packaging>
15+
16+
<name>inverno-benchmark</name>
17+
<description>Inverno framework benchmark test</description>
18+
19+
<properties>
20+
<maven.compiler.source>16</maven.compiler.source>
21+
<maven.compiler.target>16</maven.compiler.target>
22+
<maven.compiler.release>16</maven.compiler.release>
23+
</properties>
24+
25+
<dependencies>
26+
<dependency>
27+
<groupId>io.inverno</groupId>
28+
<artifactId>inverno-core</artifactId>
29+
</dependency>
30+
<dependency>
31+
<groupId>io.inverno.mod</groupId>
32+
<artifactId>inverno-boot</artifactId>
33+
</dependency>
34+
<dependency>
35+
<groupId>io.inverno.mod</groupId>
36+
<artifactId>inverno-configuration</artifactId>
37+
</dependency>
38+
<dependency>
39+
<groupId>io.inverno.mod</groupId>
40+
<artifactId>inverno-http-server</artifactId>
41+
</dependency>
42+
<dependency>
43+
<groupId>io.inverno.mod</groupId>
44+
<artifactId>inverno-irt</artifactId>
45+
</dependency>
46+
<dependency>
47+
<groupId>io.inverno.mod</groupId>
48+
<artifactId>inverno-sql-vertx</artifactId>
49+
</dependency>
50+
51+
<dependency>
52+
<groupId>org.unbescape</groupId>
53+
<artifactId>unbescape</artifactId>
54+
<version>1.1.6.RELEASE</version>
55+
</dependency>
56+
<dependency>
57+
<groupId>io.vertx</groupId>
58+
<artifactId>vertx-pg-client</artifactId>
59+
</dependency>
60+
61+
<dependency>
62+
<groupId>io.netty</groupId>
63+
<artifactId>netty-codec-dns</artifactId>
64+
<version>${version.netty}</version>
65+
</dependency>
66+
<dependency>
67+
<groupId>io.netty</groupId>
68+
<artifactId>netty-codec-socks</artifactId>
69+
<version>${version.netty}</version>
70+
</dependency>
71+
<dependency>
72+
<groupId>io.netty</groupId>
73+
<artifactId>netty-handler-proxy</artifactId>
74+
<version>${version.netty}</version>
75+
</dependency>
76+
<dependency>
77+
<groupId>io.netty</groupId>
78+
<artifactId>netty-resolver-dns</artifactId>
79+
<version>${version.netty}</version>
80+
</dependency>
81+
82+
<dependency>
83+
<groupId>io.netty</groupId>
84+
<artifactId>netty-transport-native-epoll</artifactId>
85+
<classifier>linux-x86_64</classifier>
86+
</dependency>
87+
88+
<dependency>
89+
<groupId>org.apache.logging.log4j</groupId>
90+
<artifactId>log4j-core</artifactId>
91+
</dependency>
92+
</dependencies>
93+
94+
<build>
95+
<plugins>
96+
<plugin>
97+
<groupId>io.inverno.tool</groupId>
98+
<artifactId>inverno-maven-plugin</artifactId>
99+
<executions>
100+
<execution>
101+
<id>inverno-package</id>
102+
<phase>package</phase>
103+
<goals>
104+
<goal>build-app</goal>
105+
</goals>
106+
<configuration>
107+
<vm>server</vm>
108+
<launchers>
109+
<launcher>
110+
<name>inverno-benchmark</name>
111+
<vmOptions>-Xms2g -Xmx2g -server -XX:+UseNUMA -XX:+UseParallelGC -Dio.netty.leakDetection.level=disabled -Dvertx.disableHttpHeadersValidation=true -Dvertx.disableMetrics=true -Dvertx.disableH2c=true -Dvertx.disableWebsockets=true -Dvertx.flashPolicyHandler=false -Dvertx.threadChecks=false -Dvertx.disableContextTimings=true -Dvertx.disableTCCL=true --add-modules io.netty.transport.unix.common,io.netty.transport.epoll</vmOptions>
112+
</launcher>
113+
</launchers>
114+
<formats>
115+
<format>zip</format>
116+
</formats>
117+
</configuration>
118+
</execution>
119+
</executions>
120+
</plugin>
121+
</plugins>
122+
</build>
123+
124+
</project>
125+
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
module io.vertx.core {
2+
requires io.netty.handler.proxy;
3+
requires io.netty.resolver.dns;
4+
requires io.netty.transport.epoll;
5+
requires io.netty.transport.unix.common;
6+
requires java.naming;
7+
requires org.apache.logging.log4j;
8+
9+
requires transitive com.fasterxml.jackson.core;
10+
requires transitive com.fasterxml.jackson.databind;
11+
requires transitive io.netty.buffer;
12+
requires transitive io.netty.codec;
13+
requires transitive io.netty.codec.dns;
14+
requires transitive io.netty.codec.http;
15+
requires transitive io.netty.codec.http2;
16+
requires transitive io.netty.common;
17+
requires transitive io.netty.handler;
18+
requires transitive io.netty.resolver;
19+
requires transitive io.netty.transport;
20+
requires transitive java.compiler;
21+
requires transitive java.logging;
22+
23+
exports io.vertx.core;
24+
exports io.vertx.core.buffer;
25+
exports io.vertx.core.buffer.impl;
26+
exports io.vertx.core.cli;
27+
exports io.vertx.core.cli.annotations;
28+
exports io.vertx.core.cli.converters;
29+
exports io.vertx.core.cli.impl;
30+
exports io.vertx.core.datagram;
31+
exports io.vertx.core.datagram.impl;
32+
exports io.vertx.core.dns;
33+
exports io.vertx.core.dns.impl;
34+
exports io.vertx.core.dns.impl.decoder;
35+
exports io.vertx.core.eventbus;
36+
exports io.vertx.core.eventbus.impl;
37+
exports io.vertx.core.eventbus.impl.clustered;
38+
exports io.vertx.core.eventbus.impl.codecs;
39+
exports io.vertx.core.file;
40+
exports io.vertx.core.file.impl;
41+
exports io.vertx.core.http;
42+
exports io.vertx.core.http.impl;
43+
exports io.vertx.core.http.impl.cgbystrom;
44+
exports io.vertx.core.http.impl.headers;
45+
exports io.vertx.core.http.impl.ws;
46+
exports io.vertx.core.impl;
47+
exports io.vertx.core.impl.cpu;
48+
exports io.vertx.core.impl.future;
49+
exports io.vertx.core.impl.launcher;
50+
exports io.vertx.core.impl.launcher.commands;
51+
exports io.vertx.core.impl.logging;
52+
exports io.vertx.core.impl.resolver;
53+
exports io.vertx.core.impl.utils;
54+
exports io.vertx.core.impl.verticle;
55+
exports io.vertx.core.json;
56+
exports io.vertx.core.json.impl;
57+
exports io.vertx.core.json.jackson;
58+
exports io.vertx.core.json.pointer;
59+
exports io.vertx.core.json.pointer.impl;
60+
exports io.vertx.core.logging;
61+
exports io.vertx.core.metrics;
62+
exports io.vertx.core.metrics.impl;
63+
exports io.vertx.core.net;
64+
exports io.vertx.core.net.impl;
65+
exports io.vertx.core.net.impl.pkcs1;
66+
exports io.vertx.core.net.impl.pool;
67+
exports io.vertx.core.net.impl.transport;
68+
exports io.vertx.core.parsetools;
69+
exports io.vertx.core.parsetools.impl;
70+
exports io.vertx.core.shareddata;
71+
exports io.vertx.core.shareddata.impl;
72+
exports io.vertx.core.spi;
73+
exports io.vertx.core.spi.cluster;
74+
exports io.vertx.core.spi.cluster.impl;
75+
exports io.vertx.core.spi.cluster.impl.selector;
76+
exports io.vertx.core.spi.json;
77+
exports io.vertx.core.spi.launcher;
78+
exports io.vertx.core.spi.logging;
79+
exports io.vertx.core.spi.metrics;
80+
exports io.vertx.core.spi.observability;
81+
exports io.vertx.core.spi.resolver;
82+
exports io.vertx.core.spi.tracing;
83+
exports io.vertx.core.streams;
84+
exports io.vertx.core.streams.impl;
85+
exports io.vertx.core.tracing;
86+
87+
provides io.vertx.core.spi.launcher.CommandFactory with
88+
io.vertx.core.impl.launcher.commands.RunCommandFactory,
89+
io.vertx.core.impl.launcher.commands.VersionCommandFactory,
90+
io.vertx.core.impl.launcher.commands.BareCommandFactory,
91+
io.vertx.core.impl.launcher.commands.ListCommandFactory,
92+
io.vertx.core.impl.launcher.commands.StartCommandFactory,
93+
io.vertx.core.impl.launcher.commands.StopCommandFactory;
94+
95+
uses io.vertx.core.spi.VertxServiceProvider;
96+
uses io.vertx.core.spi.VerticleFactory;
97+
uses io.vertx.core.spi.JsonFactory;
98+
99+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
module r2dbc.postgresql {
2+
requires com.ongres.scram.client;
3+
requires com.ongres.scram.common;
4+
requires io.netty.codec;
5+
requires io.netty.resolver;
6+
requires io.netty.transport;
7+
requires io.netty.transport.epoll;
8+
requires io.netty.transport.unix.common;
9+
requires java.naming;
10+
11+
requires transitive io.netty.buffer;
12+
requires transitive io.netty.common;
13+
requires transitive io.netty.handler;
14+
requires transitive org.reactivestreams;
15+
requires transitive r2dbc.spi;
16+
requires transitive reactor.core;
17+
requires transitive reactor.netty.core;
18+
19+
exports io.r2dbc.postgresql;
20+
exports io.r2dbc.postgresql.api;
21+
exports io.r2dbc.postgresql.authentication;
22+
exports io.r2dbc.postgresql.client;
23+
exports io.r2dbc.postgresql.codec;
24+
exports io.r2dbc.postgresql.extension;
25+
exports io.r2dbc.postgresql.message;
26+
exports io.r2dbc.postgresql.message.backend;
27+
exports io.r2dbc.postgresql.message.frontend;
28+
exports io.r2dbc.postgresql.replication;
29+
exports io.r2dbc.postgresql.util;
30+
31+
provides io.r2dbc.postgresql.extension.Extension with
32+
io.r2dbc.postgresql.codec.BuiltinDynamicCodecs;
33+
provides io.r2dbc.spi.ConnectionFactoryProvider with
34+
io.r2dbc.postgresql.PostgresqlConnectionFactoryProvider;
35+
36+
uses io.r2dbc.postgresql.extension.Extension;
37+
38+
}

0 commit comments

Comments
 (0)