This is an automated email from the ASF dual-hosted git repository.

wangweipeng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-fury.git


The following commit(s) were added to refs/heads/main by this push:
     new bcd36656 perf(java): merge perftests into benchmark (#1318)
bcd36656 is described below

commit bcd366562f7ecf96970ebef05a1877dd48805d76
Author: Shawn Yang <[email protected]>
AuthorDate: Sun Jan 7 19:08:25 2024 +0800

    perf(java): merge perftests into benchmark (#1318)
---
 .gitattributes                                     |   1 -
 ci/deploy.sh                                       |   4 +-
 ci/format.sh                                       |   4 +-
 ci/run_ci.sh                                       |   3 +
 integration_tests/README.md                        |   3 +-
 integration_tests/perftests/README.md              |  24 --
 integration_tests/perftests/pom.xml                | 251 ---------------------
 .../UserTypeDeserializeSuite.java                  |  67 ------
 .../integration_tests/UserTypeSerializeSuite.java  |  83 -------
 java/fury-benchmark/README.md                      |  13 +-
 java/fury-benchmark/pom.xml                        |  78 +++++++
 .../fury/benchmark/UserTypeDeserializeSuite.java   |  23 ++
 .../fury/benchmark/UserTypeSerializeSuite.java     |  25 ++
 .../org/apache/fury/benchmark}/state/Example.java  |   2 +-
 .../fury/benchmark}/state/FlatBuffersState.java    |  21 +-
 .../fury/benchmark}/state/ProtoBuffersState.java   |   9 +-
 .../org/apache/fury/benchmark}/state/bench.fbs     |   0
 .../fury/benchmark}/state/generated/FBSBar.java    |  24 +-
 .../fury/benchmark}/state/generated/FBSFoo.java    |   4 +-
 .../fury/benchmark}/state/generated/FBSImage.java  |   8 +-
 .../fury/benchmark}/state/generated/FBSMedia.java  |   4 +-
 .../state/generated/FBSMediaContent.java           |  16 +-
 .../fury/benchmark}/state/generated/FBSPlayer.java |   2 +-
 .../fury/benchmark}/state/generated/FBSSample.java |   4 +-
 .../fury/benchmark}/state/generated/FBSSize.java   |   2 +-
 .../fury-benchmark}/src/main/proto/bench.proto     |   0
 .../benchmark}/state/FlatBuffersStateTest.java     |  11 +-
 .../benchmark}/state/ProtoBuffersStateTest.java    |  11 +-
 licenserc.toml                                     |   2 +-
 29 files changed, 211 insertions(+), 488 deletions(-)

diff --git a/.gitattributes b/.gitattributes
index a2e46878..4c3924f5 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1 @@
 java/fury-benchmark export-ignore
-integration_tests/perftests export-ignore
\ No newline at end of file
diff --git a/ci/deploy.sh b/ci/deploy.sh
index bb9d4be8..e5d1ad40 100755
--- a/ci/deploy.sh
+++ b/ci/deploy.sh
@@ -89,8 +89,6 @@ bump_java_version() {
   echo "Set fury integration_tests version to $version"
   cd "$ROOT/integration_tests/jdk_compatibility_tests"
   mvn versions:set -DnewVersion="$version"
-  cd "$ROOT/integration_tests/perftests"
-  mvn versions:set -DnewVersion="$version"
   cd "$ROOT/integration_tests/latest_jdk_tests"
   mvn versions:set -DnewVersion="$version"
 }
@@ -176,4 +174,4 @@ python) # Deploy wheel to pypi
   echo "Execute command $*"
   "$@"
   ;;
-esac
\ No newline at end of file
+esac
diff --git a/ci/format.sh b/ci/format.sh
index 433dc47b..54750890 100755
--- a/ci/format.sh
+++ b/ci/format.sh
@@ -13,7 +13,7 @@ BLACK_VERSION_REQUIRED="22.1.0"
 SHELLCHECK_VERSION_REQUIRED="0.7.1"
 
 install_nodejs() {
-  #intall nodejs 
+  #intall nodejs
   filename="node-v16.17.1-linux-x64"
   pkg="$filename.tar.gz"
   NODE_URL="https://nodejs.org/dist/v16.17.1/$pkg";
@@ -188,7 +188,7 @@ format_java() {
       cd "$ROOT/java/fury-benchmark"
       mvn -T10 --no-transfer-progress spotless:apply
       cd "$ROOT/integration_tests"
-      dirs=("graalvm_tests" "jdk_compatibility_tests" "latest_jdk_tests" 
"perftests")
+      dirs=("graalvm_tests" "jdk_compatibility_tests" "latest_jdk_tests")
       for d in "${dirs[@]}" ; do
         pushd "$d"
           mvn -T10 --no-transfer-progress spotless:apply
diff --git a/ci/run_ci.sh b/ci/run_ci.sh
index 9d7fc9f4..52b8a87a 100755
--- a/ci/run_ci.sh
+++ b/ci/run_ci.sh
@@ -109,6 +109,9 @@ graalvm_test() {
 integration_tests() {
   cd "$ROOT"/java
   mvn -T10 -B --no-transfer-progress clean install -DskipTests
+  echo "benchmark tests"
+  cd "$ROOT"/java/fury-benchmark
+  mvn -T10 -B --no-transfer-progress clean test -Pjmh
   echo "Start latest jdk tests"
   cd "$ROOT"/integration_tests/latest_jdk_tests
   echo "latest_jdk_tests: JDK 21"
diff --git a/integration_tests/README.md b/integration_tests/README.md
index 2dc5eaad..f806f7a4 100644
--- a/integration_tests/README.md
+++ b/integration_tests/README.md
@@ -1,5 +1,6 @@
 Integration tests for fury:
 - [jdk_compatibility_tests](jdk_compatibility_tests): test fury compatibility 
across multiple jdk versions.
-- [perftests](perftests): benchmark with protobuf/flatbuffers directly.
+- [latest_jdk_tests](latest_jdk_tests): test latest jdk.
+- [graalvm_tests](graalvm_tests): test graalvm native image support.
 
 > Note that this integration_tests is not designed as a maven multi-module 
 > project on purpose, so we can introduce features of higher jdk version 
 > without breaking compilation for lower jdk, and add integration tests for 
 > other languages.
diff --git a/integration_tests/perftests/README.md 
b/integration_tests/perftests/README.md
deleted file mode 100644
index 22e3ff87..00000000
--- a/integration_tests/perftests/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-Module sued to proto/flatbuffers benchmark without pollute core codebase and 
serve as integration_tests to 
-ensure java maven shade work and so on.
-# Protobuffers/Flatbuffers benchmark
-Generate code manually:
-```bash
-flatc  -o src/main/java -j  
src/main/java/org/apache/fury/integration_tests/state/bench.fbs 
-protoc -I=src/main/java/org/apache/fury/integration_tests/state 
--java_out=src/main/java/ bench.proto
-```
-proto code can be generated by maven plugin.
-Flatbuffers generated is short, just add generated files to repo directly.
-
-# Run tests
-This benchmark use [jmh](https://github.com/openjdk/jmh) as benchmark tool. 
[jmh](https://github.com/openjdk/jmh) is
-licensed under GPL V2 with CLASSPATH exception, the usage can't be included in 
apache source/binary release unless
-as an optional feature. So Fury make it as an optional dependency and you must 
enable `jmh` profile to activate it.
-
-```bash
-cd java && mvn -T10 install -DskipTests -Dcheckstyle.skip -Dlicense.skip 
-Dmaven.javadoc.skip && cd ../integration_tests/perftests
-# use `-Pjmh` to download jmh dependencies, we mark it as optional
-# since jmh is licenced under GPL V2 andn not comply with the license policy 
of ASF.
-mvn -T10 compile -Pjmh
-#mvn exec:java 
-Dexec.mainClass="org.apache.fury.integration_tests.UserTypeSerializeSuite" 
-Dexec.args="-f 1 -wi 0 -i 1 -t 1 -w 1s -r 1s -rf csv"
-mvn exec:java 
-Dexec.mainClass="org.apache.fury.integration_tests.UserTypeSerializeSuite" 
-Pjmh
-```
\ No newline at end of file
diff --git a/integration_tests/perftests/pom.xml 
b/integration_tests/perftests/pom.xml
deleted file mode 100644
index 9a958e82..00000000
--- a/integration_tests/perftests/pom.xml
+++ /dev/null
@@ -1,251 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-
--->
-<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>org.apache.fury</groupId>
-    <artifactId>fury-parent</artifactId>
-    <version>0.5.0-SNAPSHOT</version>
-    <relativePath>../../java</relativePath>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-
-  <artifactId>perftests</artifactId>
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <jmh.version>1.33</jmh.version>
-    <uberjar.name>benchmarks</uberjar.name>
-    <protobuf.version>3.16.3</protobuf.version>
-    <checkstyle.skip>true</checkstyle.skip>
-    <maven.deploy.skip>true</maven.deploy.skip>
-    <maven.javadoc.skip>true</maven.javadoc.skip>
-  </properties>
-
-  <repositories>
-    <repository>
-      <id>sonatype</id>
-      <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
-      <releases>
-        <enabled>false</enabled>
-      </releases>
-      <snapshots>
-        <enabled>true</enabled>
-      </snapshots>
-    </repository>
-  </repositories>
-
-  <dependencies>
-    <dependency>
-      <groupId>com.google.protobuf</groupId>
-      <artifactId>protobuf-java</artifactId>
-      <version>${protobuf.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.flatbuffers</groupId>
-      <artifactId>flatbuffers-java</artifactId>
-      <version>2.0.3</version>
-    </dependency>
-  </dependencies>
-
-  <profiles>
-    <profile>
-      <id>jmh</id>
-      <dependencies>
-        <dependency>
-          <groupId>org.openjdk.jmh</groupId>
-          <artifactId>jmh-core</artifactId>
-          <version>${jmh.version}</version>
-        </dependency>
-        <dependency>
-          <groupId>org.openjdk.jmh</groupId>
-          <artifactId>jmh-generator-annprocess</artifactId>
-          <version>${jmh.version}</version>
-          <scope>provided</scope>
-        </dependency>
-      </dependencies>
-    </profile>
-  </profiles>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.10.1</version>
-        <configuration>
-          <source>1.8</source>
-          <target>1.8</target>
-          <annotationProcessorPaths>
-            <path>
-              <groupId>org.openjdk.jmh</groupId>
-              <artifactId>jmh-generator-annprocess</artifactId>
-              <version>${jmh.version}</version>
-            </path>
-          </annotationProcessorPaths>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-shade-plugin</artifactId>
-        <version>2.2</version>
-        <executions>
-          <execution>
-            <phase>package</phase>
-            <goals>
-              <goal>shade</goal>
-            </goals>
-            <configuration>
-              <finalName>${uberjar.name}</finalName>
-              <transformers>
-                <transformer
-                  
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-                  <mainClass>org.openjdk.jmh.Main</mainClass>
-                </transformer>
-              </transformers>
-              <filters>
-                <filter>
-                  <artifact>*:*</artifact>
-                  <excludes>
-                    <exclude>META-INF/*.SF</exclude>
-                    <exclude>META-INF/*.DSA</exclude>
-                    <exclude>META-INF/*.RSA</exclude>
-                  </excludes>
-                </filter>
-              </filters>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <version>3.3.0</version>
-        <executions>
-          <execution>
-            <id>build-classpath</id>
-            <goals>
-              <goal>build-classpath</goal>
-            </goals>
-            <configuration>
-              <includeScope>runtime</includeScope>
-              <outputProperty>depClasspath</outputProperty>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>exec-maven-plugin</artifactId>
-        <version>1.4.0</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>java</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <mainClass>org.openjdk.jmh.Main</mainClass>
-          <systemProperties>
-            <systemProperty>
-              <key>java.class.path</key>
-              
<value>${project.build.outputDirectory}${path.separator}${depClasspath}</value>
-            </systemProperty>
-          </systemProperties>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <version>2.7</version>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>com.diffplug.spotless</groupId>
-        <artifactId>spotless-maven-plugin</artifactId>
-        <version>2.5.0</version>
-        <configuration>
-          <java>
-            <googleJavaFormat>
-              <version>1.7</version>
-              <style>GOOGLE</style>
-            </googleJavaFormat>
-            <excludes>
-              <exclude>**/generated/*.java</exclude>
-            </excludes>
-          </java>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.xolstice.maven.plugins</groupId>
-        <artifactId>protobuf-maven-plugin</artifactId>
-        <version>0.5.1</version>
-        <extensions>true</extensions>
-        <configuration>
-          
<protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}</protocArtifact>
-          <pluginId>grpc-java</pluginId>
-          
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.47.0:exe:${os.detected.classifier}</pluginArtifact>
-          <protoSourceRoot>${basedir}/src/main/proto</protoSourceRoot>
-        </configuration>
-        <executions>
-          <execution>
-            <id>protobuf-compile</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>compile</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.0.0</version>
-        <executions>
-          <execution>
-            <id>add-source</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>add-source</goal>
-            </goals>
-            <configuration>
-              <sources>
-                
<source>${project.build.directory}/generated-sources/protobuf/java</source>
-              </sources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-    <extensions>
-      <extension>
-        <!--set os properties such as${os.detected.classifier} -->
-        <groupId>kr.motd.maven</groupId>
-        <artifactId>os-maven-plugin</artifactId>
-        <version>1.5.0.Final</version>
-      </extension>
-    </extensions>
-  </build>
-</project>
\ No newline at end of file
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/UserTypeDeserializeSuite.java
 
b/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/UserTypeDeserializeSuite.java
deleted file mode 100644
index 4030d156..00000000
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/UserTypeDeserializeSuite.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.fury.integration_tests;
-
-import java.io.IOException;
-import org.apache.fury.benchmark.state.ObjectType;
-import org.apache.fury.integration_tests.state.FlatBuffersState;
-import 
org.apache.fury.integration_tests.state.FlatBuffersState.FlatBuffersUserTypeState;
-import org.apache.fury.integration_tests.state.ProtoBuffersState;
-import 
org.apache.fury.integration_tests.state.ProtoBuffersState.ProtoBuffersUserTypeState;
-import org.apache.fury.util.Platform;
-import org.openjdk.jmh.Main;
-import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.BenchmarkMode;
-import org.openjdk.jmh.annotations.CompilerControl;
-import org.openjdk.jmh.annotations.Mode;
-
-@BenchmarkMode(Mode.Throughput)
-@CompilerControl(value = CompilerControl.Mode.INLINE)
-public class UserTypeDeserializeSuite extends 
org.apache.fury.benchmark.UserTypeDeserializeSuite {
-
-  @Benchmark
-  public Object protobuffers_deserialize(ProtoBuffersUserTypeState state) {
-    if (state.objectType == ObjectType.SAMPLE) {
-      return ProtoBuffersState.deserializeSample(state.data);
-    } else {
-      return ProtoBuffersState.deserializeMediaContent(state.data);
-    }
-  }
-
-  @Benchmark
-  public Object flatbuffers_deserialize(FlatBuffersUserTypeState state) {
-    Platform.clearBuffer(state.deserializedData);
-    if (state.objectType == ObjectType.SAMPLE) {
-      return FlatBuffersState.deserializeSample(state.deserializedData);
-    } else {
-      return FlatBuffersState.deserializeMediaContent(state.deserializedData);
-    }
-  }
-
-  public static void main(String[] args) throws IOException {
-    if (args.length == 0) {
-      String commandLine =
-          "io.*.integration_tests.UserTypeDeserializeSuite.*buffers.* -f 0 -wi 
0 -i 1 -t 1 -w 2s -r 1s -rf csv";
-      System.out.println(commandLine);
-      args = commandLine.split(" ");
-    }
-    Main.main(args);
-  }
-}
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/UserTypeSerializeSuite.java
 
b/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/UserTypeSerializeSuite.java
deleted file mode 100644
index ce28f64c..00000000
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/UserTypeSerializeSuite.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.fury.integration_tests;
-
-import java.io.IOException;
-import org.apache.fury.benchmark.data.MediaContent;
-import org.apache.fury.benchmark.data.Sample;
-import org.apache.fury.benchmark.state.BufferType;
-import org.apache.fury.benchmark.state.ObjectType;
-import org.apache.fury.integration_tests.state.FlatBuffersState;
-import 
org.apache.fury.integration_tests.state.FlatBuffersState.FlatBuffersUserTypeState;
-import org.apache.fury.integration_tests.state.ProtoBuffersState;
-import 
org.apache.fury.integration_tests.state.ProtoBuffersState.ProtoBuffersUserTypeState;
-import org.apache.fury.util.Platform;
-import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.BenchmarkMode;
-import org.openjdk.jmh.annotations.CompilerControl;
-import org.openjdk.jmh.annotations.Mode;
-
-@BenchmarkMode(Mode.Throughput)
-@CompilerControl(value = CompilerControl.Mode.INLINE)
-public class UserTypeSerializeSuite extends 
org.apache.fury.benchmark.UserTypeSerializeSuite {
-  @Benchmark
-  public byte[] protobuffers_serialize(ProtoBuffersUserTypeState state) {
-    if (state.objectType == ObjectType.SAMPLE) {
-      return ProtoBuffersState.serializeSample((Sample) state.object);
-    } else {
-      return ProtoBuffersState.serializeMediaContent((MediaContent) 
state.object);
-    }
-  }
-
-  @Benchmark
-  public Object flatbuffers_serialize(FlatBuffersUserTypeState state) {
-    Platform.clearBuffer(state.directBuffer);
-    if (state.objectType == ObjectType.SAMPLE) {
-      return FlatBuffersState.serializeSample((Sample) state.object, 
state.directBuffer);
-    } else {
-      return FlatBuffersState.serializeMediaContent((MediaContent) 
state.object);
-    }
-  }
-
-  public static void main(String[] args) throws IOException {
-    {
-      ProtoBuffersUserTypeState state = new ProtoBuffersUserTypeState();
-      state.objectType = ObjectType.SAMPLE;
-      state.bufferType = BufferType.array;
-      state.setup();
-      if (true) {
-        throw new RuntimeException();
-      }
-    }
-    {
-      FlatBuffersUserTypeState state = new FlatBuffersUserTypeState();
-      state.objectType = ObjectType.SAMPLE;
-      state.bufferType = BufferType.array;
-      state.setup();
-    }
-    // if (args.length == 0) {
-    //   String commandLine = 
"io.*.integration_tests.UserTypeSerializeSuite.*buffers.* -f 0 -wi 0
-    // -i 1 -t 1 -w 1s -r 1s -rf csv";
-    //   System.out.println(commandLine);
-    //   args = commandLine.split(" ");
-    // }
-    // Main.main(args);
-  }
-}
diff --git a/java/fury-benchmark/README.md b/java/fury-benchmark/README.md
index bcedc2b6..8e205b68 100644
--- a/java/fury-benchmark/README.md
+++ b/java/fury-benchmark/README.md
@@ -8,18 +8,20 @@ Fury Java Benchmark contains benchmarks for:
 - Fst
 - Protostuff
 - Jsonb
+- Protobuf
+- Flatbuffers
 
 > Part of benchmark data is based on [Kryo 
 > benchmark](https://github.com/EsotericSoftware/kryo/tree/master/benchmarks).
 > Kryo benchmark suite is based on [Kryo 
 > benchmark](https://github.com/EsotericSoftware/kryo/tree/master/benchmarks).
 
 # How to run
-This benchmark use [jmh](https://github.com/openjdk/jmh) as benchmark tool. 
[jmh](https://github.com/openjdk/jmh) is 
+This benchmark use [jmh](https://github.com/openjdk/jmh) as benchmark tool. 
[jmh](https://github.com/openjdk/jmh) is
 licensed under GPL V2 with CLASSPATH exception, the usage can't be included in 
apache source/binary release unless
 as an optional feature. So Fury make it as an optional dependency and you must 
enable `jmh` profile to activate it.
 
 ```bash
 # Install fury
-cd ../java && mvn install -DskipTests && cd -
+cd ../java && mvn install -DskipTests -Dcheckstyle.skip -Dlicense.skip 
-Dmaven.javadoc.skip && cd -
 
 # build benchmark jar
 # use `-Pjmh` to download jmh dependencies, we mark it as optional
@@ -30,6 +32,13 @@ nohup java -jar target/benchmarks.jar -f 5 -wi 3 -i 5 -t 1 
-w 3s -r 5s -rf csv >
 java -jar target/benchmarks.jar "io.*\.deserialize$" -f 1 -wi 1 -i 3 -t 1 -w 
2s -r 2s -rf csv
 ```
 
+Generate Protobuf/Flatbuffers code manually:
+```bash
+flatc  -o src/main/java -j  
src/main/java/org/apache/fury/integration_tests/state/bench.fbs
+protoc -I=src/main/java/org/apache/fury/integration_tests/state 
--java_out=src/main/java/ bench.proto
+```
+Protobuf code can be generated by maven plugin automatically. Flatbuffers 
generated code is short, so we added generated files to repo directly.
+
 # Maven run
 
 ```bash
diff --git a/java/fury-benchmark/pom.xml b/java/fury-benchmark/pom.xml
index a5327277..6b7c5e5c 100644
--- a/java/fury-benchmark/pom.xml
+++ b/java/fury-benchmark/pom.xml
@@ -139,6 +139,16 @@
       <artifactId>smoothie-map</artifactId>
       <version>2.0.2</version>
     </dependency>
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+      <version>${protobuf.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.flatbuffers</groupId>
+      <artifactId>flatbuffers-java</artifactId>
+      <version>2.0.3</version>
+    </dependency>
   </dependencies>
 
   <profiles>
@@ -257,6 +267,74 @@
           <skip>true</skip>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.xolstice.maven.plugins</groupId>
+        <artifactId>protobuf-maven-plugin</artifactId>
+        <version>0.5.1</version>
+        <extensions>true</extensions>
+        <configuration>
+          
<protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}</protocArtifact>
+          <pluginId>grpc-java</pluginId>
+          
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.47.0:exe:${os.detected.classifier}</pluginArtifact>
+          <protoSourceRoot>${basedir}/src/main/proto</protoSourceRoot>
+        </configuration>
+        <executions>
+          <execution>
+            <id>protobuf-compile</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>compile</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>3.0.0</version>
+        <executions>
+          <execution>
+            <id>add-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>add-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                
<source>${project.build.directory}/generated-sources/protobuf/java</source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>com.diffplug.spotless</groupId>
+        <artifactId>spotless-maven-plugin</artifactId>
+        <version>${maven-spotless-plugin.version}</version>
+        <configuration>
+          <java>
+            <includes>
+              <include>src/**/*.java</include>
+            </includes>
+            <excludes>
+              <exclude>**/generated/**/*.java</exclude>
+            </excludes>
+            <googleJavaFormat>
+              <!-- 1.19.1 support JDK21 -->
+              <version>1.19.1</version>
+              <style>GOOGLE</style>
+            </googleJavaFormat>
+          </java>
+        </configuration>
+      </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <!--set os properties such as${os.detected.classifier} -->
+        <groupId>kr.motd.maven</groupId>
+        <artifactId>os-maven-plugin</artifactId>
+        <version>1.5.0.Final</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git 
a/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/UserTypeDeserializeSuite.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/UserTypeDeserializeSuite.java
index 8a70abbb..b63b6104 100644
--- 
a/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/UserTypeDeserializeSuite.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/UserTypeDeserializeSuite.java
@@ -20,13 +20,17 @@
 package org.apache.fury.benchmark;
 
 import java.io.IOException;
+import org.apache.fury.benchmark.state.FlatBuffersState;
 import org.apache.fury.benchmark.state.FstState;
 import org.apache.fury.benchmark.state.FuryState;
 import org.apache.fury.benchmark.state.HessionState;
 import org.apache.fury.benchmark.state.JDKState;
 import org.apache.fury.benchmark.state.JsonbState;
 import org.apache.fury.benchmark.state.KryoState;
+import org.apache.fury.benchmark.state.ObjectType;
+import org.apache.fury.benchmark.state.ProtoBuffersState;
 import org.apache.fury.benchmark.state.ProtostuffState;
+import org.apache.fury.util.Platform;
 import org.openjdk.jmh.Main;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
@@ -110,6 +114,25 @@ public class UserTypeDeserializeSuite {
     return JsonbState.deserialize(bh, state);
   }
 
+  @Benchmark
+  public Object 
protobuffers_deserialize(ProtoBuffersState.ProtoBuffersUserTypeState state) {
+    if (state.objectType == ObjectType.SAMPLE) {
+      return ProtoBuffersState.deserializeSample(state.data);
+    } else {
+      return ProtoBuffersState.deserializeMediaContent(state.data);
+    }
+  }
+
+  @Benchmark
+  public Object 
flatbuffers_deserialize(FlatBuffersState.FlatBuffersUserTypeState state) {
+    Platform.clearBuffer(state.deserializedData);
+    if (state.objectType == ObjectType.SAMPLE) {
+      return FlatBuffersState.deserializeSample(state.deserializedData);
+    } else {
+      return FlatBuffersState.deserializeMediaContent(state.deserializedData);
+    }
+  }
+
   public static void main(String[] args) throws IOException {
     if (args.length == 0) {
       String commandLine =
diff --git 
a/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/UserTypeSerializeSuite.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/UserTypeSerializeSuite.java
index a66c8aad..f376433a 100644
--- 
a/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/UserTypeSerializeSuite.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/UserTypeSerializeSuite.java
@@ -21,13 +21,19 @@ package org.apache.fury.benchmark;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import org.apache.fury.benchmark.data.MediaContent;
+import org.apache.fury.benchmark.data.Sample;
+import org.apache.fury.benchmark.state.FlatBuffersState;
 import org.apache.fury.benchmark.state.FstState;
 import org.apache.fury.benchmark.state.FuryState;
 import org.apache.fury.benchmark.state.HessionState;
 import org.apache.fury.benchmark.state.JDKState;
 import org.apache.fury.benchmark.state.JsonbState;
 import org.apache.fury.benchmark.state.KryoState;
+import org.apache.fury.benchmark.state.ObjectType;
+import org.apache.fury.benchmark.state.ProtoBuffersState;
 import org.apache.fury.benchmark.state.ProtostuffState;
+import org.apache.fury.util.Platform;
 import org.openjdk.jmh.Main;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
@@ -116,6 +122,25 @@ public class UserTypeSerializeSuite {
     return JsonbState.serialize(bh, state, state.object);
   }
 
+  @Benchmark
+  public byte[] 
protobuffers_serialize(ProtoBuffersState.ProtoBuffersUserTypeState state) {
+    if (state.objectType == ObjectType.SAMPLE) {
+      return ProtoBuffersState.serializeSample((Sample) state.object);
+    } else {
+      return ProtoBuffersState.serializeMediaContent((MediaContent) 
state.object);
+    }
+  }
+
+  @Benchmark
+  public Object 
flatbuffers_serialize(FlatBuffersState.FlatBuffersUserTypeState state) {
+    Platform.clearBuffer(state.directBuffer);
+    if (state.objectType == ObjectType.SAMPLE) {
+      return FlatBuffersState.serializeSample((Sample) state.object, 
state.directBuffer);
+    } else {
+      return FlatBuffersState.serializeMediaContent((MediaContent) 
state.object);
+    }
+  }
+
   public static void main(String[] args) throws IOException {
     if (args.length == 0) {
       String commandLine =
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/Example.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/Example.java
similarity index 95%
rename from 
integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/Example.java
rename to 
java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/Example.java
index e8f5691b..953fc2e0 100644
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/Example.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/Example.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.fury.integration_tests.state;
+package org.apache.fury.benchmark.state;
 
 import java.util.List;
 import java.util.Map;
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/FlatBuffersState.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/FlatBuffersState.java
similarity index 95%
rename from 
integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/FlatBuffersState.java
rename to 
java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/FlatBuffersState.java
index e253c583..58e658d4 100644
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/FlatBuffersState.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/FlatBuffersState.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.fury.integration_tests.state;
+package org.apache.fury.benchmark.state;
 
 import com.google.common.base.Preconditions;
 import com.google.flatbuffers.FlatBufferBuilder;
@@ -31,17 +31,14 @@ import org.apache.fury.benchmark.data.Image;
 import org.apache.fury.benchmark.data.Media;
 import org.apache.fury.benchmark.data.MediaContent;
 import org.apache.fury.benchmark.data.Sample;
-import org.apache.fury.benchmark.state.BenchmarkState;
-import org.apache.fury.benchmark.state.BufferType;
-import org.apache.fury.benchmark.state.ObjectType;
-import org.apache.fury.integration_tests.state.Example.Bar;
-import org.apache.fury.integration_tests.state.Example.Foo;
-import org.apache.fury.integration_tests.state.generated.FBSBar;
-import org.apache.fury.integration_tests.state.generated.FBSFoo;
-import org.apache.fury.integration_tests.state.generated.FBSImage;
-import org.apache.fury.integration_tests.state.generated.FBSMedia;
-import org.apache.fury.integration_tests.state.generated.FBSMediaContent;
-import org.apache.fury.integration_tests.state.generated.FBSSample;
+import org.apache.fury.benchmark.state.Example.Bar;
+import org.apache.fury.benchmark.state.Example.Foo;
+import org.apache.fury.benchmark.state.generated.FBSBar;
+import org.apache.fury.benchmark.state.generated.FBSFoo;
+import org.apache.fury.benchmark.state.generated.FBSImage;
+import org.apache.fury.benchmark.state.generated.FBSMedia;
+import org.apache.fury.benchmark.state.generated.FBSMediaContent;
+import org.apache.fury.benchmark.state.generated.FBSSample;
 import org.apache.fury.util.Platform;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.openjdk.jmh.annotations.Level;
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/ProtoBuffersState.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/ProtoBuffersState.java
similarity index 97%
rename from 
integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/ProtoBuffersState.java
rename to 
java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/ProtoBuffersState.java
index a392f38b..2ee83606 100644
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/ProtoBuffersState.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/ProtoBuffersState.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.fury.integration_tests.state;
+package org.apache.fury.benchmark.state;
 
 import com.google.common.base.Preconditions;
 import com.google.protobuf.InvalidProtocolBufferException;
@@ -28,11 +28,8 @@ import org.apache.fury.benchmark.data.Image;
 import org.apache.fury.benchmark.data.Media;
 import org.apache.fury.benchmark.data.MediaContent;
 import org.apache.fury.benchmark.data.Sample;
-import org.apache.fury.benchmark.state.BenchmarkState;
-import org.apache.fury.benchmark.state.BufferType;
-import org.apache.fury.benchmark.state.ObjectType;
-import org.apache.fury.integration_tests.state.Example.Bar;
-import org.apache.fury.integration_tests.state.Example.Foo;
+import org.apache.fury.benchmark.state.Example.Bar;
+import org.apache.fury.benchmark.state.Example.Foo;
 import org.apache.fury.integration_tests.state.generated.ProtoMessage;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.openjdk.jmh.annotations.CompilerControl;
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/bench.fbs
 b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/bench.fbs
similarity index 100%
rename from 
integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/bench.fbs
rename to 
java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/bench.fbs
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSBar.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSBar.java
similarity index 77%
rename from 
integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSBar.java
rename to 
java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSBar.java
index 7705c270..bf787625 100644
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSBar.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSBar.java
@@ -1,10 +1,10 @@
 // automatically generated by the FlatBuffers compiler, do not modify
 
-package org.apache.fury.integration_tests.state.generated;
+package org.apache.fury.benchmark.state.generated;
 
 import java.nio.*;
 import java.lang.*;
-import java.util.*;
+
 import com.google.flatbuffers.*;
 
 @SuppressWarnings("unused")
@@ -15,27 +15,27 @@ public final class FBSBar extends Table {
   public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
   public FBSBar __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return 
this; }
 
-  public org.apache.fury.integration_tests.state.generated.FBSFoo f1() { 
return f1(new org.apache.fury.integration_tests.state.generated.FBSFoo()); }
-  public org.apache.fury.integration_tests.state.generated.FBSFoo 
f1(org.apache.fury.integration_tests.state.generated.FBSFoo obj) { int o = 
__offset(4); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
+  public FBSFoo f1() { return f1(new FBSFoo()); }
+  public FBSFoo f1(FBSFoo obj) { int o = __offset(4); return o != 0 ? 
obj.__assign(__indirect(o + bb_pos), bb) : null; }
   public String f2() { int o = __offset(6); return o != 0 ? __string(o + 
bb_pos) : null; }
   public ByteBuffer f2AsByteBuffer() { return __vector_as_bytebuffer(6, 1); }
   public ByteBuffer f2InByteBuffer(ByteBuffer _bb) { return 
__vector_in_bytebuffer(_bb, 6, 1); }
-  public org.apache.fury.integration_tests.state.generated.FBSFoo f3(int j) { 
return f3(new org.apache.fury.integration_tests.state.generated.FBSFoo(), j); }
-  public org.apache.fury.integration_tests.state.generated.FBSFoo 
f3(org.apache.fury.integration_tests.state.generated.FBSFoo obj, int j) { int o 
= __offset(8); return o != 0 ? obj.__assign(__indirect(__vector(o) + j * 4), 
bb) : null; }
+  public FBSFoo f3(int j) { return f3(new FBSFoo(), j); }
+  public FBSFoo f3(FBSFoo obj, int j) { int o = __offset(8); return o != 0 ? 
obj.__assign(__indirect(__vector(o) + j * 4), bb) : null; }
   public int f3Length() { int o = __offset(8); return o != 0 ? __vector_len(o) 
: 0; }
-  public org.apache.fury.integration_tests.state.generated.FBSFoo.Vector 
f3Vector() { return f3Vector(new 
org.apache.fury.integration_tests.state.generated.FBSFoo.Vector()); }
-  public org.apache.fury.integration_tests.state.generated.FBSFoo.Vector 
f3Vector(org.apache.fury.integration_tests.state.generated.FBSFoo.Vector obj) { 
int o = __offset(8); return o != 0 ? obj.__assign(__vector(o), 4, bb) : null; }
+  public FBSFoo.Vector f3Vector() { return f3Vector(new FBSFoo.Vector()); }
+  public FBSFoo.Vector f3Vector(FBSFoo.Vector obj) { int o = __offset(8); 
return o != 0 ? obj.__assign(__vector(o), 4, bb) : null; }
   public int f4Key(int j) { int o = __offset(10); return o != 0 ? 
bb.getInt(__vector(o) + j * 4) : 0; }
   public int f4KeyLength() { int o = __offset(10); return o != 0 ? 
__vector_len(o) : 0; }
   public IntVector f4KeyVector() { return f4KeyVector(new IntVector()); }
   public IntVector f4KeyVector(IntVector obj) { int o = __offset(10); return o 
!= 0 ? obj.__assign(__vector(o), bb) : null; }
   public ByteBuffer f4KeyAsByteBuffer() { return __vector_as_bytebuffer(10, 
4); }
   public ByteBuffer f4KeyInByteBuffer(ByteBuffer _bb) { return 
__vector_in_bytebuffer(_bb, 10, 4); }
-  public org.apache.fury.integration_tests.state.generated.FBSFoo f4Value(int 
j) { return f4Value(new 
org.apache.fury.integration_tests.state.generated.FBSFoo(), j); }
-  public org.apache.fury.integration_tests.state.generated.FBSFoo 
f4Value(org.apache.fury.integration_tests.state.generated.FBSFoo obj, int j) { 
int o = __offset(12); return o != 0 ? obj.__assign(__indirect(__vector(o) + j * 
4), bb) : null; }
+  public FBSFoo f4Value(int j) { return f4Value(new FBSFoo(), j); }
+  public FBSFoo f4Value(FBSFoo obj, int j) { int o = __offset(12); return o != 
0 ? obj.__assign(__indirect(__vector(o) + j * 4), bb) : null; }
   public int f4ValueLength() { int o = __offset(12); return o != 0 ? 
__vector_len(o) : 0; }
-  public org.apache.fury.integration_tests.state.generated.FBSFoo.Vector 
f4ValueVector() { return f4ValueVector(new 
org.apache.fury.integration_tests.state.generated.FBSFoo.Vector()); }
-  public org.apache.fury.integration_tests.state.generated.FBSFoo.Vector 
f4ValueVector(org.apache.fury.integration_tests.state.generated.FBSFoo.Vector 
obj) { int o = __offset(12); return o != 0 ? obj.__assign(__vector(o), 4, bb) : 
null; }
+  public FBSFoo.Vector f4ValueVector() { return f4ValueVector(new 
FBSFoo.Vector()); }
+  public FBSFoo.Vector f4ValueVector(FBSFoo.Vector obj) { int o = 
__offset(12); return o != 0 ? obj.__assign(__vector(o), 4, bb) : null; }
   public int f5() { int o = __offset(14); return o != 0 ? bb.getInt(o + 
bb_pos) : 0; }
   public long f6() { int o = __offset(16); return o != 0 ? bb.getLong(o + 
bb_pos) : 0L; }
   public float f7() { int o = __offset(18); return o != 0 ? bb.getFloat(o + 
bb_pos) : 0.0f; }
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSFoo.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSFoo.java
similarity index 98%
rename from 
integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSFoo.java
rename to 
java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSFoo.java
index b56f7b49..73407a48 100644
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSFoo.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSFoo.java
@@ -1,10 +1,10 @@
 // automatically generated by the FlatBuffers compiler, do not modify
 
-package org.apache.fury.integration_tests.state.generated;
+package org.apache.fury.benchmark.state.generated;
 
 import java.nio.*;
 import java.lang.*;
-import java.util.*;
+
 import com.google.flatbuffers.*;
 
 @SuppressWarnings("unused")
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSImage.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSImage.java
similarity index 87%
rename from 
integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSImage.java
rename to 
java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSImage.java
index bf0322fe..1fb090d5 100644
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSImage.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSImage.java
@@ -1,10 +1,10 @@
 // automatically generated by the FlatBuffers compiler, do not modify
 
-package org.apache.fury.integration_tests.state.generated;
+package org.apache.fury.benchmark.state.generated;
 
 import java.nio.*;
 import java.lang.*;
-import java.util.*;
+
 import com.google.flatbuffers.*;
 
 @SuppressWarnings("unused")
@@ -24,8 +24,8 @@ public final class FBSImage extends Table {
   public int width() { int o = __offset(8); return o != 0 ? bb.getInt(o + 
bb_pos) : 0; }
   public int height() { int o = __offset(10); return o != 0 ? bb.getInt(o + 
bb_pos) : 0; }
   public byte size() { int o = __offset(12); return o != 0 ? bb.get(o + 
bb_pos) : 0; }
-  public org.apache.fury.integration_tests.state.generated.FBSMedia media() { 
return media(new org.apache.fury.integration_tests.state.generated.FBSMedia()); 
}
-  public org.apache.fury.integration_tests.state.generated.FBSMedia 
media(org.apache.fury.integration_tests.state.generated.FBSMedia obj) { int o = 
__offset(14); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
+  public FBSMedia media() { return media(new FBSMedia()); }
+  public FBSMedia media(FBSMedia obj) { int o = __offset(14); return o != 0 ? 
obj.__assign(__indirect(o + bb_pos), bb) : null; }
 
   public static int createFBSImage(FlatBufferBuilder builder,
       int uriOffset,
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSMedia.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSMedia.java
similarity index 98%
rename from 
integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSMedia.java
rename to 
java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSMedia.java
index 9caa4cb2..1670001e 100644
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSMedia.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSMedia.java
@@ -1,10 +1,10 @@
 // automatically generated by the FlatBuffers compiler, do not modify
 
-package org.apache.fury.integration_tests.state.generated;
+package org.apache.fury.benchmark.state.generated;
 
 import java.nio.*;
 import java.lang.*;
-import java.util.*;
+
 import com.google.flatbuffers.*;
 
 @SuppressWarnings("unused")
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSMediaContent.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSMediaContent.java
similarity index 64%
rename from 
integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSMediaContent.java
rename to 
java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSMediaContent.java
index 2d58dcab..f5b728a6 100644
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSMediaContent.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSMediaContent.java
@@ -1,10 +1,10 @@
 // automatically generated by the FlatBuffers compiler, do not modify
 
-package org.apache.fury.integration_tests.state.generated;
+package org.apache.fury.benchmark.state.generated;
 
 import java.nio.*;
 import java.lang.*;
-import java.util.*;
+
 import com.google.flatbuffers.*;
 
 @SuppressWarnings("unused")
@@ -15,13 +15,13 @@ public final class FBSMediaContent extends Table {
   public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
   public FBSMediaContent __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); 
return this; }
 
-  public org.apache.fury.integration_tests.state.generated.FBSMedia media() { 
return media(new org.apache.fury.integration_tests.state.generated.FBSMedia()); 
}
-  public org.apache.fury.integration_tests.state.generated.FBSMedia 
media(org.apache.fury.integration_tests.state.generated.FBSMedia obj) { int o = 
__offset(4); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
-  public org.apache.fury.integration_tests.state.generated.FBSImage images(int 
j) { return images(new 
org.apache.fury.integration_tests.state.generated.FBSImage(), j); }
-  public org.apache.fury.integration_tests.state.generated.FBSImage 
images(org.apache.fury.integration_tests.state.generated.FBSImage obj, int j) { 
int o = __offset(6); return o != 0 ? obj.__assign(__indirect(__vector(o) + j * 
4), bb) : null; }
+  public FBSMedia media() { return media(new FBSMedia()); }
+  public FBSMedia media(FBSMedia obj) { int o = __offset(4); return o != 0 ? 
obj.__assign(__indirect(o + bb_pos), bb) : null; }
+  public FBSImage images(int j) { return images(new FBSImage(), j); }
+  public FBSImage images(FBSImage obj, int j) { int o = __offset(6); return o 
!= 0 ? obj.__assign(__indirect(__vector(o) + j * 4), bb) : null; }
   public int imagesLength() { int o = __offset(6); return o != 0 ? 
__vector_len(o) : 0; }
-  public org.apache.fury.integration_tests.state.generated.FBSImage.Vector 
imagesVector() { return imagesVector(new 
org.apache.fury.integration_tests.state.generated.FBSImage.Vector()); }
-  public org.apache.fury.integration_tests.state.generated.FBSImage.Vector 
imagesVector(org.apache.fury.integration_tests.state.generated.FBSImage.Vector 
obj) { int o = __offset(6); return o != 0 ? obj.__assign(__vector(o), 4, bb) : 
null; }
+  public FBSImage.Vector imagesVector() { return imagesVector(new 
FBSImage.Vector()); }
+  public FBSImage.Vector imagesVector(FBSImage.Vector obj) { int o = 
__offset(6); return o != 0 ? obj.__assign(__vector(o), 4, bb) : null; }
 
   public static int createFBSMediaContent(FlatBufferBuilder builder,
       int mediaOffset,
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSPlayer.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSPlayer.java
similarity index 84%
rename from 
integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSPlayer.java
rename to 
java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSPlayer.java
index 54ea822a..a082eabb 100644
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSPlayer.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSPlayer.java
@@ -1,6 +1,6 @@
 // automatically generated by the FlatBuffers compiler, do not modify
 
-package org.apache.fury.integration_tests.state.generated;
+package org.apache.fury.benchmark.state.generated;
 
 public final class FBSPlayer {
   private FBSPlayer() { }
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSSample.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSSample.java
similarity index 99%
rename from 
integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSSample.java
rename to 
java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSSample.java
index d8e4c6ef..7db81c29 100644
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSSample.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSSample.java
@@ -1,10 +1,10 @@
 // automatically generated by the FlatBuffers compiler, do not modify
 
-package org.apache.fury.integration_tests.state.generated;
+package org.apache.fury.benchmark.state.generated;
 
 import java.nio.*;
 import java.lang.*;
-import java.util.*;
+
 import com.google.flatbuffers.*;
 
 @SuppressWarnings("unused")
diff --git 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSSize.java
 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSSize.java
similarity index 84%
rename from 
integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSSize.java
rename to 
java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSSize.java
index a4f907d4..96dd54bd 100644
--- 
a/integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/FBSSize.java
+++ 
b/java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/FBSSize.java
@@ -1,6 +1,6 @@
 // automatically generated by the FlatBuffers compiler, do not modify
 
-package org.apache.fury.integration_tests.state.generated;
+package org.apache.fury.benchmark.state.generated;
 
 public final class FBSSize {
   private FBSSize() { }
diff --git a/integration_tests/perftests/src/main/proto/bench.proto 
b/java/fury-benchmark/src/main/proto/bench.proto
similarity index 100%
rename from integration_tests/perftests/src/main/proto/bench.proto
rename to java/fury-benchmark/src/main/proto/bench.proto
diff --git 
a/integration_tests/perftests/src/test/java/org/apache/fury/integration_tests/state/FlatBuffersStateTest.java
 
b/java/fury-benchmark/src/test/java/org/apache/fury/benchmark/state/FlatBuffersStateTest.java
similarity index 83%
rename from 
integration_tests/perftests/src/test/java/org/apache/fury/integration_tests/state/FlatBuffersStateTest.java
rename to 
java/fury-benchmark/src/test/java/org/apache/fury/benchmark/state/FlatBuffersStateTest.java
index 7846abb2..d3c4388e 100644
--- 
a/integration_tests/perftests/src/test/java/org/apache/fury/integration_tests/state/FlatBuffersStateTest.java
+++ 
b/java/fury-benchmark/src/test/java/org/apache/fury/benchmark/state/FlatBuffersStateTest.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.fury.integration_tests.state;
+package org.apache.fury.benchmark.state;
 
 import java.nio.ByteBuffer;
 import org.apache.fury.benchmark.data.MediaContent;
@@ -41,4 +41,13 @@ public class FlatBuffersStateTest {
     MediaContent mediaContent = 
FlatBuffersState.deserializeMediaContent(ByteBuffer.wrap(data));
     Assert.assertEquals(mediaContent, object);
   }
+
+  @Test
+  public void testFlatBuffersUserTypeState() {
+    FlatBuffersState.FlatBuffersUserTypeState state =
+        new FlatBuffersState.FlatBuffersUserTypeState();
+    state.objectType = ObjectType.SAMPLE;
+    state.bufferType = BufferType.array;
+    state.setup();
+  }
 }
diff --git 
a/integration_tests/perftests/src/test/java/org/apache/fury/integration_tests/state/ProtoBuffersStateTest.java
 
b/java/fury-benchmark/src/test/java/org/apache/fury/benchmark/state/ProtoBuffersStateTest.java
similarity index 81%
rename from 
integration_tests/perftests/src/test/java/org/apache/fury/integration_tests/state/ProtoBuffersStateTest.java
rename to 
java/fury-benchmark/src/test/java/org/apache/fury/benchmark/state/ProtoBuffersStateTest.java
index 41ee40f9..f3998cd5 100644
--- 
a/integration_tests/perftests/src/test/java/org/apache/fury/integration_tests/state/ProtoBuffersStateTest.java
+++ 
b/java/fury-benchmark/src/test/java/org/apache/fury/benchmark/state/ProtoBuffersStateTest.java
@@ -17,10 +17,11 @@
  * under the License.
  */
 
-package org.apache.fury.integration_tests.state;
+package org.apache.fury.benchmark.state;
 
 import org.apache.fury.benchmark.data.MediaContent;
 import org.apache.fury.benchmark.data.Sample;
+import 
org.apache.fury.benchmark.state.ProtoBuffersState.ProtoBuffersUserTypeState;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
@@ -40,4 +41,12 @@ public class ProtoBuffersStateTest {
     MediaContent mediaContent = 
ProtoBuffersState.deserializeMediaContent(data);
     Assert.assertEquals(mediaContent, object);
   }
+
+  @Test
+  public void testProtoBuffersUserTypeState() {
+    ProtoBuffersUserTypeState state = new ProtoBuffersUserTypeState();
+    state.objectType = ObjectType.SAMPLE;
+    state.bufferType = BufferType.array;
+    state.setup();
+  }
 }
diff --git a/licenserc.toml b/licenserc.toml
index 9fe1a849..1ef360ce 100644
--- a/licenserc.toml
+++ b/licenserc.toml
@@ -23,7 +23,7 @@ excludes = [
     "go.sum",
 
     # Generated
-    
"integration_tests/perftests/src/main/java/org/apache/fury/integration_tests/state/generated/**",
+    
"java/fury-benchmark/src/main/java/org/apache/fury/benchmark/state/generated/**",
 
     # Derived
     "ci/format.sh",


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to