Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
213 changes: 213 additions & 0 deletions all-in-one/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>iot-benchmark</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>all-in-one</artifactId>
<name>Benchmark All-in-One</name>

<dependencies>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>influxdb</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>influxdb-2.0</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>cnosdb</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>kairosdb</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>opentsdb</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>tdengine</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>tdengine-3.0</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>questdb</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>dolphindb-3.0</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>dolphindb-2.0</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>timescaledb</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>timescaledb-cluster</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>victoriametrics</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>iotdb-2.0</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>iotdb-1.3</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>mssqlserver</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.edu.tsinghua</groupId>
<artifactId>sqlite</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<finalName>iot-benchmark-all-in-one</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<executions>
<!-- Package binaries-->
<execution>
<id>server-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/assembly/assembly.xml</descriptor>
</descriptors>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
</archive>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<!-- 去重:lib/<db> 中与 lib/core 内容一致的 jar 删除(同名不同版本保留)。
与 assembly 同 phase,按声明顺序在其之后执行。-->
<execution>
<id>dedup-lib</id>
<phase>package</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>cn.edu.tsinghua.iot.benchmark.allinone.DedupTool</mainClass>
<arguments>
<argument>${project.build.directory}/iot-benchmark-all-in-one/iot-benchmark-all-in-one/lib</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
<executions>
<!-- 用去重后的 dir 产物重建 zip:ant 的 zipfileset filemode 与 JDK 版本无关,
能保住 .sh 的可执行位(DedupTool 无法用 JDK 21 写 zip 权限位)。
与 dedup 同 phase,按声明顺序在其之后执行。-->
<execution>
<id>repackage-zip</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<zip destfile="${project.build.directory}/iot-benchmark-all-in-one.zip" whenempty="skip">
<!-- 不含 `/` 的 pattern 只匹配 dir 顶层 -->
<zipfileset dir="${project.build.directory}/iot-benchmark-all-in-one/iot-benchmark-all-in-one"
prefix="iot-benchmark-all-in-one"
excludes="bin/**,*.sh,**/*.sh"/>
<zipfileset dir="${project.build.directory}/iot-benchmark-all-in-one/iot-benchmark-all-in-one/bin"
prefix="iot-benchmark-all-in-one/bin"
filemode="755"/>
<zipfileset dir="${project.build.directory}/iot-benchmark-all-in-one/iot-benchmark-all-in-one"
prefix="iot-benchmark-all-in-one"
includes="*.sh"
filemode="755"/>
</zip>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
154 changes: 154 additions & 0 deletions all-in-one/src/assembly/assembly.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
<?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.
-->
<!--
All-in-one 布局说明:
lib/core/ core 发行目录的 lib(core.jar + 其依赖;FakeDB/SelfCheck 仅需该目录)
lib/<db>/ 各数据库模块发行目录的 lib(模块 jar + 其逐模块解析的依赖)
直接聚合各模块自己 assembly 出的发行目录(逐模块依赖语义,版本互不干扰),
避免 moduleSet/dependencySet 的全局依赖图仲裁(会把 slf4j 1.7 与 2.x 混装)。
启动脚本(bin/startup.sh / benchmark.bat)按 conf/config.properties 的 DB_SWITCH
路由到对应 lib/<db>,classpath 顺序为「专属目录在前、lib/core 在后」。
注意:
1. 构建必须带 -am(mvn package -pl all-in-one -am),保证依赖模块先产出发行目录。
2. 增量重建必须带 clean(mvn clean package -pl all-in-one -am):dir 格式的
assembly 不会清空输出目录,旧构建多出的 jar 会残留(例如历史上曾混入 lib/core
的 cnosdb-1.0.0.jar)。发行/CI 场景一律用 clean 构建。
-->
<assembly>
<id>all-in-one</id>
<formats>
<!-- 只出 dir:去重(exec-maven-plugin)在 package 阶段本 execution 之后执行,
zip 由 maven-antrun-plugin 在去重后重建(ant zipfileset filemode 与 JDK
版本无关,能保住 .sh 可执行位),见 all-in-one/pom.xml -->
<format>dir</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/core/target/iot-benchmark-core/iot-benchmark-core/lib</directory>
<outputDirectory>lib/core</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/influxdb/target/iot-benchmark-influxdb/iot-benchmark-influxdb/lib</directory>
<outputDirectory>lib/influxdb</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/influxdb-2.0/target/iot-benchmark-influxdb-2.0/iot-benchmark-influxdb-2.0/lib</directory>
<outputDirectory>lib/influxdb-2.0</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/cnosdb/target/iot-benchmark-cnosdb/iot-benchmark-cnosdb/lib</directory>
<outputDirectory>lib/cnosdb</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/kairosdb/target/iot-benchmark-kairosdb/iot-benchmark-kairosdb/lib</directory>
<outputDirectory>lib/kairosdb</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/opentsdb/target/iot-benchmark-opentsdb/iot-benchmark-opentsdb/lib</directory>
<outputDirectory>lib/opentsdb</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/tdengine/target/iot-benchmark-tdengine/iot-benchmark-tdengine/lib</directory>
<outputDirectory>lib/tdengine</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/tdengine-3.0/target/iot-benchmark-tdengine-3.0/iot-benchmark-tdengine-3.0/lib</directory>
<outputDirectory>lib/tdengine-3.0</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/questdb/target/iot-benchmark-questdb/iot-benchmark-questdb/lib</directory>
<outputDirectory>lib/questdb</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/dolphindb-3.0/target/iot-benchmark-dolphindb-3.0/iot-benchmark-dolphindb-3.0/lib</directory>
<outputDirectory>lib/dolphindb-3.0</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/dolphindb-2.0/target/iot-benchmark-dolphindb-2.0/iot-benchmark-dolphindb-2.0/lib</directory>
<outputDirectory>lib/dolphindb-2.0</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/timescaledb/target/iot-benchmark-timescaledb/iot-benchmark-timescaledb/lib</directory>
<outputDirectory>lib/timescaledb</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/timescaledb-cluster/target/iot-benchmark-timescaledb-cluster/iot-benchmark-timescaledb-cluster/lib</directory>
<outputDirectory>lib/timescaledb-cluster</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/victoriametrics/target/iot-benchmark-victoriametrics/iot-benchmark-victoriametrics/lib</directory>
<outputDirectory>lib/victoriametrics</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/iotdb-2.0/target/iot-benchmark-iotdb-2.0/iot-benchmark-iotdb-2.0/lib</directory>
<outputDirectory>lib/iotdb-2.0</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/iotdb-1.3/target/iot-benchmark-iotdb-1.3/iot-benchmark-iotdb-1.3/lib</directory>
<outputDirectory>lib/iotdb-1.3</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/mssqlserver/target/iot-benchmark-mssqlserver/iot-benchmark-mssqlserver/lib</directory>
<outputDirectory>lib/mssqlserver</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/sqlite/target/iot-benchmark-sqlite/iot-benchmark-sqlite/lib</directory>
<outputDirectory>lib/sqlite</outputDirectory>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/configuration/bin/</directory>
<outputDirectory>bin</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>${maven.multiModuleProjectDirectory}/configuration/conf/</directory>
<outputDirectory>conf</outputDirectory>
</fileSet>
</fileSets>
<files>
<file>
<source>${maven.multiModuleProjectDirectory}/configuration/benchmark.bat</source>
</file>
<file>
<source>${maven.multiModuleProjectDirectory}/configuration/benchmark.sh</source>
<fileMode>0755</fileMode>
</file>
<file>
<source>${maven.multiModuleProjectDirectory}/configuration/rep-benchmark.sh</source>
<fileMode>0755</fileMode>
</file>

<file>
<source>${maven.multiModuleProjectDirectory}/configuration/cli-benchmark.sh</source>
<fileMode>0755</fileMode>
</file>
<file>
<source>${maven.multiModuleProjectDirectory}/configuration/routine</source>
</file>
<file>
<source>${maven.multiModuleProjectDirectory}/LICENSE</source>
</file>
<file>
<source>${project.build.outputDirectory}/git.properties</source>
</file>
</files>
</assembly>
Loading
Loading