文档 1.7 版本已不再积极维护,你当前浏览的是一份归档快照。
最新文档请参阅 最新版本。
HugeGraph工具链本地测试指南
本指南帮助开发者在本地运行 HugeGraph 工具链测试。
1. 核心概念
1.1 核心依赖:HugeGraph Server
工具链的集成测试和功能测试都依赖 HugeGraph Server,包括 Client、Loader、Hubble、Spark Connector、Tools 等组件。
1.2 测试类型
- 单元测试 (Unit Tests):测试单个函数/方法,不依赖外部服务
- API 测试 (ApiTestSuite):测试 API 接口,需要运行中的 HugeGraph Server
- 功能测试 (FuncTestSuite):端到端测试,需要完整的系统环境
2. 环境准备
2.1 系统要求
- 操作系统:Linux / macOS(Windows 使用 WSL2)
- JDK:>= 11,配置好
JAVA_HOME - Maven:>= 3.6
- Python:>= 3.11(仅 Hubble 测试需要)
2.2 克隆代码
1git clone https://github.com/apache/hugegraph-toolchain.git
2cd hugegraph-toolchain
3. 部署测试环境
方式选择
- 脚本部署:指定 Server Commit,可复现 CI 使用的服务端版本
- Docker 部署:适合快速检查;测试失败时应先核对镜像与 Toolchain 的兼容性
详细安装说明参考 社区文档
3.1 脚本部署
参数说明
$COMMIT_ID:指定 Server 源码的 Git Commit ID$DB_DATABASE / $DB_PASS:Loader JDBC 测试用的 MySQL 数据库名和密码
部署步骤
1. 安装 HugeGraph Server
1# 设置 Server 基线;需要可复现结果时请使用完整 commit SHA
2export COMMIT_ID="master"
3
4# 执行安装(脚本位于 /assembly/travis/ 目录)
5hugegraph-client/assembly/travis/install-hugegraph-from-source.sh $COMMIT_ID
- 脚本会启动 HTTP 8080 和 HTTPS 8443 两个实例,并配置
admin/pa 认证。 - 执行前确认两个端口未被占用。
2. 安装可选依赖
1# Hadoop (仅 Loader HDFS 测试需要)
2hugegraph-loader/assembly/travis/install-hadoop.sh
3
4# MySQL (仅 Loader JDBC 测试需要)
5hugegraph-loader/assembly/travis/install-mysql.sh $DB_DATABASE $DB_PASS
3. 健康检查
1curl -u admin:pa http://localhost:8080/graphspaces/DEFAULT/graphs
2# 返回 {"graphs":["hugegraph"]} 表示成功
3.2 Docker 部署
注意:Docker 镜像可能版本滞后,如遇兼容性问题请使用脚本部署
快速启动
1docker network create hugegraph-net
2docker run -itd --name=server -p 8080:8080 --network hugegraph-net hugegraph/hugegraph:latest
docker-compose 配置(可选)
完整配置示例,包含 Server、MySQL、Hadoop 服务(需要 Docker Compose V2):
1version: '3.8'
2
3services:
4 hugegraph-server:
5 image: hugegraph/hugegraph:latest # 可以替换为特定版本,或构建自己的镜像
6 container_name: hugegraph-server
7 ports:
8 - "8080:8080" # HugeGraph Server HTTP 端口
9 environment:
10 # 根据需要配置HugeGraph Server的参数,例如后端存储
11 - HUGEGRAPH_SERVER_OPTIONS="-Dstore.backend=rocksdb"
12 volumes:
13 # 如果需要持久化数据或挂载配置文件,可以在这里添加卷
14 # - ./hugegraph-data:/opt/hugegraph/data
15 healthcheck:
16 test: ["CMD-SHELL", "curl -f http://localhost:8080/graphspaces/DEFAULT/graphs || exit 1"]
17 interval: 5s
18 timeout: 3s
19 retries: 5
20 networks:
21 - hugegraph-net
22
23 # 如果需要hugegraph-loader的JDBC测试,可以添加以下服务
24 # mysql:
25 # image: mysql:5.7
26 # container_name: mysql-db
27 # environment:
28 # MYSQL_ROOT_PASSWORD: ${DB_PASS:-your_mysql_root_password} # 从环境变量读取,或使用默认值
29 # MYSQL_DATABASE: ${DB_DATABASE:-hugegraph_test_db} # 从环境变量读取,或使用默认值
30 # ports:
31 # - "3306:3306"
32 # volumes:
33 # - ./mysql-data:/var/lib/mysql # 数据持久化
34 # healthcheck:
35 # test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-p${DB_PASS:-your_mysql_root_password}"]
36 # interval: 5s
37 # timeout: 3s
38 # retries: 5
39 # networks:
40 # - hugegraph-net
41
42 # 如果需要hugegraph-loader的Hadoop/HDFS测试,可以添加以下服务
43 # namenode:
44 # image: johannestang/hadoop-namenode:2.0.0-hadoop2.8.5-java8
45 # container_name: namenode
46 # ports:
47 # - "0.0.0.0:9870:9870"
48 # - "0.0.0.0:8020:8020"
49 # environment:
50 # - CLUSTER_NAME=test-cluster
51 # - HDFS_NAMENODE_USER=root
52 # - HADOOP_CONF_DIR=/hadoop/etc/hadoop
53 # volumes:
54 # - ./config/core-site.xml:/hadoop/etc/hadoop/core-site.xml
55 # - ./config/hdfs-site.xml:/hadoop/etc/hadoop/hdfs-site.xml
56 # - namenode_data:/hadoop/dfs/name
57 # command: bash -c "if [ ! -d /hadoop/dfs/name/current ]; then hdfs namenode -format; fi && /entrypoint.sh"
58 # healthcheck:
59 # test: ["CMD", "hdfs", "dfsadmin", "-report"]
60 # interval: 5s
61 # timeout: 3s
62 # retries: 5
63 # networks:
64 # - hugegraph-net
65
66 # datanode:
67 # image: johannestang/hadoop-datanode:2.0.0-hadoop2.8.5-java8
68 # container_name: datanode
69 # depends_on:
70 # - namenode
71 # environment:
72 # - CLUSTER_NAME=test-cluster
73 # - HDFS_DATANODE_USER=root
74 # - HADOOP_CONF_DIR=/hadoop/etc/hadoop
75 # volumes:
76 # - ./config/core-site.xml:/hadoop/etc/hadoop/core-site.xml
77 # - ./config/hdfs-site.xml:/hadoop/etc/hadoop/hdfs-site.xml
78 # - datanode_data:/hadoop/dfs/data
79 # healthcheck:
80 # test: ["CMD", "hdfs", "dfsadmin", "-report"]
81 # interval: 5s
82 # timeout: 3s
83 # retries: 5
84 # networks:
85 # - hugegraph-net
86
87networks:
88 hugegraph-net:
89 driver: bridge
90volumes:
91 namenode_data:
92 datanode_data:
Hadoop 配置挂载
在与 docker-compose.yml 相同的目录下创建 ./config 文件夹用于挂载 Hadoop 配置文件。如果不需要 HDFS 测试,可以跳过此步骤。
📁 ./config/core-site.xml 内容:
1<configuration>
2 <property>
3 <name>fs.defaultFS</name>
4 <value>hdfs://namenode:8020</value>
5 </property>
6</configuration>
📁 ./config/hdfs-site.xml 内容:
1<configuration>
2 <property>
3 <name>dfs.namenode.name.dir</name>
4 <value>/hadoop/hdfs/name</value>
5 </property>
6 <property>
7 <name>dfs.datanode.data.dir</name>
8 <value>/hadoop/hdfs/data</value>
9 </property>
10 <property>
11 <name>dfs.permissions.superusergroup</name>
12 <value>hadoop</value>
13 </property>
14 <property>
15 <name>dfs.support.append</name>
16 <value>true</value>
17 </property>
18</configuration>
Docker 操作
1# 启动服务
2docker compose up -d
3
4# 检查状态
5docker compose ps
6lsof -i:8080 # Server
7lsof -i:8020 # Hadoop
8lsof -i:3306 # MySQL
9
10# 停止服务
11docker compose down
4. 运行测试
各工具的测试流程:
4.1 hugegraph-client
编译
1mvn -e compile -pl hugegraph-client -Dmaven.javadoc.skip=true -ntp
依赖服务
启动 HugeGraph Server(参考 第3节)
Server 鉴权配置
ApiTest 需要认证。使用 3.1 节的脚本安装时无需重复配置;自行部署 Server 时,认证配置和测试凭证必须与测试代码一致。
1# 1. 修改鉴权模式
2cp conf/rest-server.properties conf/rest-server.properties.backup
3sed -i 's|#auth.authenticator=.*|auth.authenticator=org.apache.hugegraph.auth.StandardAuthenticator|' conf/rest-server.properties
4grep auth.authenticator conf/rest-server.properties
5sed -i 's|gremlin.graph=org.apache.hugegraph.HugeFactory|gremlin.graph=org.apache.hugegraph.auth.HugeFactoryAuthProxy|' conf/graphs/hugegraph.properties
6
7# 2. 设置密码
8# 注:测试代码中默认使用 "pa" 作为密码,设置时需与测试保持一致
9bin/stop-hugegraph.sh
10export PASSWORD="pa" # 设置为测试默认密码
11echo -e "${PASSWORD}" | bin/init-store.sh
12bin/start-hugegraph.sh
运行测试
1# 检查环境
2curl -u admin:pa http://localhost:8080/graphspaces/DEFAULT/graphs
3
4# 运行测试
5cd hugegraph-client
6mvn test -Dtest=UnitTestSuite -ntp # 单元测试
7mvn test -Dtest=ApiTestSuite -ntp # API测试(需 Server)
8mvn test -Dtest=FuncTestSuite -ntp # 功能测试(需 Server)
测试失败时检查 Server 日志:logs/hugegraph-server.log
4.2 hugegraph-loader
编译
1mvn install -pl hugegraph-client,hugegraph-loader -am -Dmaven.javadoc.skip=true -DskipTests -ntp
依赖服务
- 必需:HugeGraph Server
- 可选:Hadoop (HDFS 测试)、MySQL (JDBC 测试)
运行测试
1cd hugegraph-loader
2mvn test -P unit -ntp # 单元测试
3mvn test -P file -ntp # 文件测试(需 Server)
4mvn test -P hdfs -ntp # HDFS测试(需 Server + Hadoop)
5mvn test -P jdbc -ntp # JDBC测试(需 Server + MySQL)
6mvn test -P kafka -ntp # Kafka测试(需 Server)
4.3 hugegraph-hubble
编译
1mvn install -pl hugegraph-client,hugegraph-loader -am -Dmaven.javadoc.skip=true -DskipTests -ntp
2cd hugegraph-hubble
3mvn -e compile -Dmaven.javadoc.skip=true -ntp
依赖服务
1. 启动 Server(参考 第3节)
2. Python 环境
1python -m venv venv
2source venv/bin/activate # Windows: venv\Scripts\activate
3python -m pip install -r hubble-dist/assembly/travis/requirements.txt
3. 构建并验证
1mvn package -Dmaven.test.skip=true
2# 可选:启动验证
3cd apache-hugegraph-hubble*/bin
4./start-hubble.sh -d && sleep 10
5curl http://localhost:8088/actuator/health
6./stop-hubble.sh
运行测试
1# 单元测试
2mvn test -P unit-test -pl hugegraph-hubble/hubble-be -ntp
3
4# 旧版 Python API 测试(需 Server;脚本会安装并启动 Hubble)
5curl -u admin:pa http://localhost:8080/graphspaces/DEFAULT/graphs # 检查 Server
6cd hugegraph-hubble
7./hubble-dist/assembly/travis/run-api-test.sh
8
9# 当前 CI 的完整验收入口(需先生成 Hubble tar 包)
10HUBBLE_TARBALL="$(ls target/apache-hugegraph-hubble-*.tar.gz | head -n 1)"
11hubble-dist/assembly/travis/verify-hubble-issue-694.sh \
12 "$HUBBLE_TARBALL" http://127.0.0.1:8080
4.4 hugegraph-spark-connector
编译
1mvn install -pl hugegraph-client,hugegraph-spark-connector -am -Dmaven.javadoc.skip=true -DskipTests -ntp
运行测试
1cd hugegraph-spark-connector
2mvn test -ntp # 需 Server 运行
编译
1mvn install -pl hugegraph-client,hugegraph-tools -am -Dmaven.javadoc.skip=true -DskipTests -ntp
运行测试
1cd hugegraph-tools
2mvn test -Dtest=FuncTestSuite -ntp # 需 Server 运行
5. 常见问题
服务连接问题
无法连接 Server、MySQL 或 Hadoop 时:
- 确认服务已启动(Server 必须在 8080 端口)
- 检查端口占用:
lsof -i:8080 - Docker 检查:
docker compose ps 和 docker compose logs
配置问题
找不到文件或参数错误时:
- 检查环境变量:
echo $COMMIT_ID - 脚本权限:
chmod +x hugegraph-*/assembly/travis/*.sh
HDFS 测试失败
- 确认 NameNode/DataNode 运行正常
- 检查 Hadoop 日志
- 验证 HDFS 连接:
hdfs dfsadmin -report
JDBC 测试失败
- 确认 MySQL 运行正常
- 验证数据库连接:
mysql -u root -p$DB_PASS - 检查 MySQL 日志
6. 参考资料