Преглед на файлове

Update versions to latest releases (#4184)

* Update to Vertx 3.6.0-SNAPSHOT

* Use direct buffer for Hello World

* Update to disable header validation setting that changes in 3.6.0

* Added info printed on console at process start

* Use native transport when possible

* Put plaintext headers in an array

* Update to 3.6.0.CR1

* Update the pg client to the latest 0.10.7 version

* Update rocker template version

* Update version in README
Julien Viet преди 7 години
родител
ревизия
bc4728b781

+ 1 - 1
frameworks/Java/vertx/README.md

@@ -29,7 +29,7 @@ This is the Vert.x portion of a [benchmarking test suite](../) comparing a varie
 ## Versions
 
 * [Java OpenJDK 1.8](http://openjdk.java.net/)
-* [vertx 3.5.0.Beta1](http://vertx.io/)
+* [vertx 3.6.0.CR1](http://vertx.io/)
 
 ## Test URLs
 

+ 18 - 5
frameworks/Java/vertx/pom.xml

@@ -10,7 +10,8 @@
 		<maven.compiler.target>1.8</maven.compiler.target>
 		<!-- the main class -->
 		<main.class>vertx.App</main.class>
-		<stack.version>3.5.4</stack.version>
+		<stack.version>3.6.0.CR1</stack.version>
+		<netty.version>4.1.27.Final</netty.version>
 	</properties>
 
 	<dependencies>
@@ -20,14 +21,26 @@
 			<version>${stack.version}</version>
 		</dependency>
 		<dependency>
-			<groupId>com.julienviet</groupId>
+			<groupId>io.netty</groupId>
+			<artifactId>netty-transport-native-kqueue</artifactId>
+			<version>${netty.version}</version>
+			<classifier>osx-x86_64</classifier>
+		</dependency>
+		<dependency>
+			<groupId>io.netty</groupId>
+			<artifactId>netty-transport-native-epoll</artifactId>
+			<version>${netty.version}</version>
+			<classifier>linux-x86_64</classifier>
+		</dependency>
+		<dependency>
+			<groupId>io.reactiverse</groupId>
 			<artifactId>reactive-pg-client</artifactId>
-			<version>0.3.1</version>
+			<version>0.10.7</version>
 		</dependency>
 		<dependency>
 			<groupId>com.fizzed</groupId>
 			<artifactId>rocker-compiler</artifactId>
-			<version>0.22.0</version>
+			<version>1.0.0</version>
 		</dependency>
 		<dependency>
 			<groupId>javax.xml.bind</groupId>
@@ -46,7 +59,7 @@
 			<plugin>
 				<groupId>com.fizzed</groupId>
 				<artifactId>rocker-maven-plugin</artifactId>
-				<version>0.22.0</version>
+				<version>1.0.0</version>
 				<executions>
 					<execution>
 						<id>generate-rocker-templates</id>

+ 57 - 22
frameworks/Java/vertx/src/main/java/vertx/App.java

@@ -1,11 +1,7 @@
 package vertx;
 
-import com.julienviet.pgclient.*;
-import io.vertx.core.AbstractVerticle;
-import io.vertx.core.DeploymentOptions;
-import io.vertx.core.Handler;
-import io.vertx.core.MultiMap;
-import io.vertx.core.Vertx;
+import io.reactiverse.pgclient.*;
+import io.vertx.core.*;
 import io.vertx.core.buffer.Buffer;
 import io.vertx.core.http.HttpHeaders;
 import io.vertx.core.http.HttpServer;
@@ -21,8 +17,13 @@ import vertx.model.Fortune;
 import vertx.model.Message;
 import vertx.model.World;
 
+import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
 import java.nio.file.Files;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -66,7 +67,7 @@ public class App extends AbstractVerticle implements Handler<HttpServerRequest>
   private static final CharSequence RESPONSE_TYPE_JSON = HttpHeaders.createOptimized("application/json");
 
   private static final String HELLO_WORLD = "Hello, world!";
-  private static final Buffer HELLO_WORLD_BUFFER = Buffer.buffer(HELLO_WORLD);
+  private static final Buffer HELLO_WORLD_BUFFER = Buffer.factory.directBuffer(HELLO_WORLD, "UTF-8");
 
   private static final CharSequence HEADER_SERVER = HttpHeaders.createOptimized("server");
   private static final CharSequence HEADER_DATE = HttpHeaders.createOptimized("date");
@@ -80,27 +81,36 @@ public class App extends AbstractVerticle implements Handler<HttpServerRequest>
   private static final String SELECT_WORLD = "SELECT id, randomnumber from WORLD where id=$1";
   private static final String SELECT_FORTUNE = "SELECT id, message from FORTUNE";
 
-  private CharSequence dateString;
-
   private HttpServer server;
 
   private PgClient client;
 
+  private CharSequence dateString;
+
+  private CharSequence[] plaintextHeaders;
+
+  public static CharSequence createDateHeader() {
+    return HttpHeaders.createOptimized(DateTimeFormatter.RFC_1123_DATE_TIME.format(ZonedDateTime.now()));
+  }
+
   @Override
   public void start() throws Exception {
     int port = 8080;
     server = vertx.createHttpServer(new HttpServerOptions());
     server.requestHandler(App.this).listen(port);
-    dateString = HttpHeaders.createOptimized(java.time.format.DateTimeFormatter.RFC_1123_DATE_TIME.format(java.time.ZonedDateTime.now()));
+    dateString = createDateHeader();
+    plaintextHeaders = new CharSequence[] {
+        HEADER_CONTENT_TYPE, RESPONSE_TYPE_PLAIN,
+        HEADER_SERVER, SERVER,
+        HEADER_DATE, dateString,
+        HEADER_CONTENT_LENGTH, HELLO_WORLD_LENGTH };
     JsonObject config = config();
-    vertx.setPeriodic(1000, handler -> {
-      dateString = HttpHeaders.createOptimized(java.time.format.DateTimeFormatter.RFC_1123_DATE_TIME.format(java.time.ZonedDateTime.now()));
-    });
+    vertx.setPeriodic(1000, id -> plaintextHeaders[5] = dateString = createDateHeader());
     PgPoolOptions options = new PgPoolOptions();
     options.setDatabase(config.getString("database"));
     options.setHost(config.getString("host"));
     options.setPort(config.getInteger("port", 5432));
-    options.setUsername(config.getString("username"));
+    options.setUser(config.getString("username"));
     options.setPassword(config.getString("password"));
     options.setCachePreparedStatements(true);
     options.setMaxSize(1);
@@ -143,11 +153,9 @@ public class App extends AbstractVerticle implements Handler<HttpServerRequest>
   private void handlePlainText(HttpServerRequest request) {
     HttpServerResponse response = request.response();
     MultiMap headers = response.headers();
-    headers
-        .add(HEADER_CONTENT_TYPE, RESPONSE_TYPE_PLAIN)
-        .add(HEADER_SERVER, SERVER)
-        .add(HEADER_DATE, dateString)
-        .add(HEADER_CONTENT_LENGTH, HELLO_WORLD_LENGTH);
+    for (int i = 0;i < plaintextHeaders.length; i+= 2) {
+      headers.add(plaintextHeaders[i], plaintextHeaders[i + 1]);
+    }
     response.end(HELLO_WORLD_BUFFER);
   }
 
@@ -175,7 +183,7 @@ public class App extends AbstractVerticle implements Handler<HttpServerRequest>
     HttpServerResponse resp = req.response();
     client.preparedQuery(SELECT_WORLD, Tuple.of(randomWorld()), res -> {
       if (res.succeeded()) {
-        PgIterator<Row> resultSet = res.result().iterator();
+        PgIterator resultSet = res.result().iterator();
         if (!resultSet.hasNext()) {
           resp.setStatusCode(404).end();
           return;
@@ -295,7 +303,7 @@ public class App extends AbstractVerticle implements Handler<HttpServerRequest>
       HttpServerResponse response = req.response();
       if (ar.succeeded()) {
         List<Fortune> fortunes = new ArrayList<>();
-        PgIterator<Row> resultSet = ar.result().iterator();
+        PgIterator resultSet = ar.result().iterator();
         if (!resultSet.hasNext()) {
           response.setStatusCode(404).end("No results");
           return;
@@ -322,10 +330,11 @@ public class App extends AbstractVerticle implements Handler<HttpServerRequest>
   public static void main(String[] args) throws Exception {
     JsonObject config = new JsonObject(new String(Files.readAllBytes(new File(args[0]).toPath())));
     int procs = Runtime.getRuntime().availableProcessors();
-    Vertx vertx = Vertx.vertx();
+    Vertx vertx = Vertx.vertx(new VertxOptions().setPreferNativeTransport(true));
     vertx.exceptionHandler(err -> {
       err.printStackTrace();
     });
+    printConfig(vertx);
     vertx.deployVerticle(App.class.getName(),
         new DeploymentOptions().setInstances(procs * 2).setConfig(config), event -> {
           if (event.succeeded()) {
@@ -335,4 +344,30 @@ public class App extends AbstractVerticle implements Handler<HttpServerRequest>
           }
         });
   }
+
+  private static void printConfig(Vertx vertx) {
+    boolean nativeTransport = vertx.isNativeTransportEnabled();
+    String version = "unknown";
+    try {
+      InputStream in = Vertx.class.getClassLoader().getResourceAsStream("META-INF/vertx/vertx-version.txt");
+      if (in == null) {
+        in = Vertx.class.getClassLoader().getResourceAsStream("vertx-version.txt");
+      }
+      ByteArrayOutputStream out = new ByteArrayOutputStream();
+      byte[] buffer = new byte[256];
+      while (true) {
+        int amount = in.read(buffer);
+        if (amount == -1) {
+          break;
+        }
+        out.write(buffer, 0, amount);
+      }
+      version = out.toString();
+    } catch (IOException e) {
+      logger.error("Could not read Vertx version", e);;
+    }
+    logger.debug("Vertx: " + version);
+    logger.debug("Default Event Loop Size: " + VertxOptions.DEFAULT_EVENT_LOOP_POOL_SIZE);
+    logger.debug("Native transport : " + nativeTransport);
+  }
 }

+ 1 - 0
frameworks/Java/vertx/vertx-postgres.dockerfile

@@ -19,6 +19,7 @@ CMD export DBIP=`getent hosts tfb-database | awk '{ print $1 }'` && \
       -Dvertx.threadChecks=false \
       -Dvertx.disableContextTimings=true \
       -Dvertx.disableTCCL=true \
+      -Dvertx.disableHttpHeadersValidation=true \
       -jar \
       target/vertx.benchmark-0.0.1-SNAPSHOT-fat.jar \
       src/main/conf/config.json

+ 1 - 1
frameworks/Java/vertx/vertx.dockerfile

@@ -3,4 +3,4 @@ WORKDIR /vertx
 COPY src src
 COPY pom.xml pom.xml
 RUN mvn package -q
-CMD ["java", "-Xms2G", "-Xmx2G", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-Dvertx.disableMetrics=true", "-Dvertx.disableH2c=true", "-Dvertx.disableWebsockets=true", "-Dvertx.flashPolicyHandler=false", "-Dvertx.threadChecks=false", "-Dvertx.disableContextTimings=true", "-Dvertx.disableTCCL=true", "-jar", "target/vertx.benchmark-0.0.1-SNAPSHOT-fat.jar", "src/main/conf/config.json"]
+CMD ["java", "-Xms2G", "-Xmx2G", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-Dvertx.disableMetrics=true", "-Dvertx.disableH2c=true", "-Dvertx.disableWebsockets=true", "-Dvertx.flashPolicyHandler=false", "-Dvertx.threadChecks=false", "-Dvertx.disableContextTimings=true", "-Dvertx.disableTCCL=true", "-Dvertx.disableHttpHeadersValidation=true", "-jar", "target/vertx.benchmark-0.0.1-SNAPSHOT-fat.jar", "src/main/conf/config.json"]