Skip to content
This repository was archived by the owner on Apr 23, 2022. It is now read-only.

Commit 377dcbf

Browse files
committed
added mangooio benchmark tests
1 parent 97c8d59 commit 377dcbf

File tree

28 files changed

+695
-0
lines changed

28 files changed

+695
-0
lines changed

frameworks/Java/mangooio/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
FrameworkBenchmarks-mangooio
2+
=============================
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"framework": "mangooio",
3+
"tests": [{
4+
"default": {
5+
"setup_file": "setup",
6+
"json_url": "/json",
7+
"db_url": "/db",
8+
"query_url": "/queries?queries=",
9+
"fortune_url": "/fortunes",
10+
"update_url": "/update?queries=",
11+
"plaintext_url": "/plaintext",
12+
"port": 8080,
13+
"approach": "Realistic",
14+
"classification": "Fullstack",
15+
"database": "MongoDB",
16+
"framework": "mangooio",
17+
"language": "Java",
18+
"orm": "Full",
19+
"platform": "Undertow",
20+
"webserver": "Undertow",
21+
"os": "Linux",
22+
"database_os": "Linux",
23+
"display_name": "mangoo I/O",
24+
"notes": "",
25+
"versus": ""
26+
}
27+
}]
28+
}

frameworks/Java/mangooio/install.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/bash
2+
3+
fw_depends java8 maven

frameworks/Java/mangooio/pom.xml

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="http://maven.apache.org/POM/4.0.0"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<artifactId>mangooio</artifactId>
7+
<groupId>de.svenkubiak.techempower</groupId>
8+
<version>1.0.0-SNAPSHOT</version>
9+
<packaging>jar</packaging>
10+
<url>https://mangoo.io</url>
11+
<properties>
12+
<mangooio.version>1.0.0-Beta1-SNAPSHOT</mangooio.version>
13+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
14+
</properties>
15+
<build>
16+
<resources>
17+
<resource>
18+
<directory>src/main/java</directory>
19+
<includes>
20+
<include>**/*</include>
21+
</includes>
22+
<excludes>
23+
<exclude>**/*.java</exclude>
24+
</excludes>
25+
</resource>
26+
<resource>
27+
<directory>src/main/resources</directory>
28+
<includes>
29+
<include>**/*</include>
30+
</includes>
31+
</resource>
32+
</resources>
33+
<plugins>
34+
<plugin>
35+
<groupId>org.apache.maven.plugins</groupId>
36+
<artifactId>maven-surefire-plugin</artifactId>
37+
<version>2.18.1</version>
38+
<configuration>
39+
<includes>
40+
<include>**/*TestSuite.java</include>
41+
</includes>
42+
</configuration>
43+
</plugin>
44+
<plugin>
45+
<groupId>org.apache.maven.plugins</groupId>
46+
<artifactId>maven-compiler-plugin</artifactId>
47+
<version>3.2</version>
48+
<configuration>
49+
<source>1.8</source>
50+
<target>1.8</target>
51+
<compilerArgument>-parameters</compilerArgument>
52+
<optimize>true</optimize>
53+
<debug>false</debug>
54+
</configuration>
55+
</plugin>
56+
<plugin>
57+
<groupId>de.svenkubiak</groupId>
58+
<artifactId>mangooio-maven-plugin</artifactId>
59+
<version>${mangooio.version}</version>
60+
</plugin>
61+
<plugin>
62+
<groupId>org.apache.maven.plugins</groupId>
63+
<artifactId>maven-shade-plugin</artifactId>
64+
<version>2.2</version>
65+
<configuration>
66+
<createDependencyReducedPom>false</createDependencyReducedPom>
67+
<filters>
68+
<filter>
69+
<artifact>*:*</artifact>
70+
<excludes>
71+
<exclude>META-INF/*.SF</exclude>
72+
<exclude>META-INF/*.DSA</exclude>
73+
<exclude>META-INF/*.RSA</exclude>
74+
</excludes>
75+
</filter>
76+
</filters>
77+
<finalName>mangooioapp</finalName>
78+
</configuration>
79+
<executions>
80+
<execution>
81+
<phase>package</phase>
82+
<goals>
83+
<goal>shade</goal>
84+
</goals>
85+
<configuration>
86+
<transformers>
87+
<transformer
88+
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
89+
<transformer
90+
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
91+
<mainClass>mangoo.io.core.Application</mainClass>
92+
</transformer>
93+
</transformers>
94+
</configuration>
95+
</execution>
96+
</executions>
97+
</plugin>
98+
</plugins>
99+
</build>
100+
<dependencies>
101+
<dependency>
102+
<groupId>de.svenkubiak</groupId>
103+
<artifactId>mangooio-core</artifactId>
104+
<version>${mangooio.version}</version>
105+
</dependency>
106+
<dependency>
107+
<groupId>de.svenkubiak</groupId>
108+
<artifactId>mangooio-test-utilities</artifactId>
109+
<version>${mangooio.version}</version>
110+
<scope>test</scope>
111+
</dependency>
112+
<dependency>
113+
<groupId>de.svenkubiak</groupId>
114+
<artifactId>embedded-mongodb</artifactId>
115+
<version>4.1.1</version>
116+
</dependency>
117+
<dependency>
118+
<groupId>de.svenkubiak</groupId>
119+
<artifactId>mangooio-mongodb-extension</artifactId>
120+
<version>1.0.0</version>
121+
</dependency>
122+
</dependencies>
123+
</project>

frameworks/Java/mangooio/setup.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/bash
2+
3+
# load java environment variables
4+
source $IROOT/java8.installed
5+
6+
sed -i 's|mongodb.host=.*|mongodb.host'"${DBHOST}"'|g' src/main/resources/application.conf
7+
8+
mvn clean package -Dmaven.test.skip=true
9+
10+
java -jar target/mangooioapp.jar &
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package conf;
2+
3+
import mangoo.io.core.Application;
4+
import mangoo.io.interfaces.MangooLifecycle;
5+
6+
import com.google.inject.Singleton;
7+
8+
import de.svenkubiak.embeddedmongodb.EmbeddedMongo;
9+
10+
@Singleton
11+
public class Lifecycle implements MangooLifecycle {
12+
13+
@Override
14+
public void applicationInitialized() {
15+
if (Application.inTestMode()) {
16+
EmbeddedMongo.DB.port(29019).start();
17+
}
18+
}
19+
20+
@Override
21+
public void applicationStarted() {
22+
// Do nothing for now
23+
}
24+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package conf;
2+
3+
import mangoo.io.interfaces.MangooLifecycle;
4+
5+
import com.google.inject.AbstractModule;
6+
import com.google.inject.Singleton;
7+
8+
@Singleton
9+
public class Module extends AbstractModule {
10+
11+
@Override
12+
protected void configure() {
13+
bind(MangooLifecycle.class).to(Lifecycle.class);
14+
}
15+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package conf;
2+
3+
import com.google.inject.Singleton;
4+
5+
import io.undertow.util.Methods;
6+
import mangoo.io.interfaces.MangooRoutes;
7+
import mangoo.io.routing.Router;
8+
import controllers.ApplicationController;
9+
10+
@Singleton
11+
public class Routes implements MangooRoutes {
12+
13+
@Override
14+
public void routify() {
15+
Router.mapRequest(Methods.GET).toUrl("/").onClassAndMethod(ApplicationController.class, "index");
16+
Router.mapRequest(Methods.GET).toUrl("/json").onClassAndMethod(ApplicationController.class, "json");
17+
Router.mapRequest(Methods.GET).toUrl("/db").onClassAndMethod(ApplicationController.class, "db");
18+
Router.mapRequest(Methods.GET).toUrl("/queries").onClassAndMethod(ApplicationController.class, "queries");
19+
Router.mapRequest(Methods.GET).toUrl("/plaintext").onClassAndMethod(ApplicationController.class, "plaintext");
20+
Router.mapRequest(Methods.GET).toUrl("/fortunes").onClassAndMethod(ApplicationController.class, "fortunes");
21+
Router.mapRequest(Methods.GET).toUrl("/updates").onClassAndMethod(ApplicationController.class, "updates");
22+
}
23+
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package controllers;
2+
3+
import interfaces.Constants;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
8+
import mangoo.io.routing.Response;
9+
import models.Fortune;
10+
import models.Message;
11+
import models.World;
12+
import services.DataService;
13+
import utils.RandomUtils;
14+
15+
import com.google.inject.Inject;
16+
import com.google.inject.Singleton;
17+
18+
@Singleton
19+
public class ApplicationController {
20+
21+
@Inject
22+
private DataService dataService;
23+
24+
public Response index() {
25+
return Response.withOk().andEmptyBody();
26+
}
27+
28+
public Response json() {
29+
return Response.withOk().andJsonBody(new Message(Constants.HELLO_WORLD));
30+
}
31+
32+
public Response db() {
33+
World world = dataService.findById(RandomUtils.getRandomId());
34+
return Response.withOk().andJsonBody(world);
35+
}
36+
37+
public Response queries(int queries) {
38+
List<World> worlds = dataService.getWorlds(queries);
39+
return Response.withOk().andJsonBody(worlds);
40+
}
41+
42+
public Response plaintext() {
43+
return Response.withOk().andTextBody(Constants.HELLO_WORLD);
44+
}
45+
46+
public Response fortunes() {
47+
List<Fortune> fortunes = dataService.findAllFortunes();
48+
fortunes.add(new Fortune(1, Constants.FORTUNE_MESSAGE));
49+
50+
return Response.withOk().andContent("fortunes", fortunes);
51+
}
52+
53+
public Response updates(int queries) {
54+
List<World> worldUpdates = new ArrayList<World>();
55+
56+
List<World> worlds = dataService.getWorlds(queries);
57+
for (World world : worlds) {
58+
int randomNumber = RandomUtils.getRandomId();
59+
world.setRandomnumber(randomNumber);
60+
dataService.save(world);
61+
62+
worldUpdates.add(world);
63+
}
64+
65+
return Response.withOk().andJsonBody(worldUpdates);
66+
}
67+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package interfaces;
2+
3+
public interface Constants {
4+
public static final int ROWS = 10000;
5+
public static final String HELLO_WORLD = "Hello, World!";
6+
public static final String FORTUNE_MESSAGE = "Additional fortune added at request time.";
7+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package models;
2+
3+
import java.io.Serializable;
4+
5+
import org.bson.types.ObjectId;
6+
import org.mongodb.morphia.annotations.Id;
7+
import org.mongodb.morphia.annotations.Indexed;
8+
9+
public class Fortune implements Serializable {
10+
private static final long serialVersionUID = 3493429313579555024L;
11+
12+
@Id
13+
protected ObjectId objectId;
14+
15+
@Indexed(unique=true)
16+
private long id;
17+
18+
private String message;
19+
20+
public Fortune(){
21+
}
22+
23+
public Fortune(long id, String message) {
24+
this.id = id;
25+
this.message = message;
26+
}
27+
28+
public String getMessage() {
29+
return message;
30+
}
31+
32+
public long getId() {
33+
return id;
34+
}
35+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package models;
2+
3+
public class Message {
4+
public final String message;
5+
6+
public Message(String message) {
7+
this.message = message;
8+
}
9+
}

0 commit comments

Comments
 (0)