ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

从源码构建FDB Record Layer:开发环境配置、测试运行与YAML集成测试完整指南

从源码构建FDB Record Layer:开发环境配置、测试运行与YAML集成测试完整指南 从源码构建FDB Record Layer开发环境配置、测试运行与YAML集成测试完整指南【免费下载链接】fdb-record-layerA relational database with SQL support built on FoundationDB项目地址: https://gitcode.com/gh_mirrors/fd/fdb-record-layerFDB Record Layer 是基于 FoundationDB 键值存储构建的 Java 关系数据库库支持通过 JDBC 使用完整 SQL 接口。本指南带你从零开始完成FDB Record Layer 源码构建配置开发环境、跑通测试套件并执行覆盖 SQL 核心能力的YAML 集成测试全程只需 JDK 与本地 FoundationDB 集群无需额外安装 Gradle。一、开发环境准备JDK 与 FoundationDB 两大前提 ️构建 FDB Record Layer 源码只需要两个前提这也是整个开发环境配置中仅有的硬性依赖依赖用途说明JDK编译所有模块官方 CI 使用 Eclipse Temurin任意主流发行版均可FoundationDB运行测试仅编译不需要运行测试必须本地集群构建系统由仓库自带的 Gradle Wrapper 管理见gradlew与gradle/wrapper/gradle-wrapper.properties无需单独安装 Gradle。二、克隆仓库并检查 JDK 工具链在任意目录执行克隆首次构建建议放在磁盘空间充足的目录git clone https://gitcode.com/gh_mirrors/fd/fdb-record-layer cd fdb-record-layerGradle 通过工具链Toolchain机制自动匹配 JDK。执行以下命令可确认 Gradle 已找到可用的 JDK./gradlew javaToolchains⚠️ 若 JDK 版本不满足要求构建会直接报错提示找不到匹配工具链——这是新手最常踩的第一个坑优先检查此项。三、一键构建所有模块并验证静态检查跳过测试、编译全部模块并运行 SpotBugs 与 Checkstyle 静态分析./gradlew build -x test首次构建需下载依赖通常耗时数分钟。项目采用多模块 Gradle 结构各模块构建文件按模块名.gradle命名如fdb-record-layer-core.gradle完整模块清单定义在 settings.gradle核心模块包括fdb-record-layer-core记录层核心含 1200 个 Java 源文件与全部 Protobuf 定义fdb-relational-coreSQL 解析与查询规划含 ANTLR 语法文件RelationalParser.g4fdb-relational-jdbc/fdb-relational-grpcJDBC 驱动与 gRPC 服务层yaml-testsYAML 集成测试模块下文重点fdb-record-layer-lucene、fdb-record-layer-spatial全文检索与空间索引扩展四、最快配置 IntelliJ IDEA 开发环境官方推荐 IntelliJ IDEA且不要使用已废弃的 Gradle IDEA 插件直接依赖其内置 Gradle 集成用 IntelliJ打开项目根目录触发 Gradle Sync 自动建立项目模型在 Gradle 工具窗口点击Reload All Gradle Projects通过 Build › Build Project 编译全部代码两个推荐设置可显著提升体验在 Editor › General › Auto Import 开启Optimize imports on the fly在 Advanced Settings › Gradle 开启Download sources方便跳转依赖源码调试。五、启动本地 FoundationDB 集群并跑通第一个测试测试运行依赖本地集群官方安装包通常会自动启动fdbserver进程。用集群命令行工具验证可用性fdbcli --exec status minimal看到The database is available即表示就绪。此时在 IntelliJ 中打开 FDBRecordStoreCrudTest.java直接运行writeRead()方法——它依赖 FoundationDB、速度又快是验证环境配置成功的最佳冒烟测试。首次运行约需一分钟含项目构建与测试框架预热。多集群场景默认使用标准集群文件Linux 为/etc/foundationdb/fdb.cluster。若需指定自定义集群或让测试在多个集群间随机选择可在项目根目录创建fdb-environment.yamllibraryPath: /opt/fdb/lib clusterFiles: - /opt/fdb/clusters/fdb-one.cluster - /opt/fdb/clusters/fdb-two.cluster六、Gradle 测试任务全景一次看懂 5 个入口命令 构建脚本 gradle/testing.gradle 定义了多个按用途划分的测试任务通过 JUnit 标签Tag精准筛选任务覆盖范围典型场景test主力测试集自动排除WipesFDB标签日常开发首选destructiveTest仅Tag(Tags.WipesFDB)会清空整个数据库串行运行maxParallelForks 1performanceTest仅Tag(Tags.Performance)采集性能数字验证性能回归quickTest仅 embedded 配置的 YAML 测试开发新功能时快速迭代checktest全量检查静态分析 全部测试提交前的完整把关常用命令示例# 完整检查 测试附 HTML 格式的 SpotBugs 报告 ./gradlew -PspotbugsEnableHtmlReport check test # 单独运行性能测试 ./gradlew performanceTest七、YAML 集成测试用声明式 .yamsql 驱动 SQL 全覆盖 ✅FDB Record Layer 的 SQL 能力有大部分由YAML 集成测试覆盖。测试用例以声明式.yamsql文件编写存放于 yaml-tests/src/test/resources/由YamlTest测试框架驱动入口类 YamlIntegrationTests.java。一个典型用例由四段组成options如最低支持版本、schema_template建库建表 DDL、setup灌入测试数据、test_block断言查询结果与执行计划schema_template: CREATE TYPE AS ENUM MOOD ( JOYFUL, HAPPY, RELAXED, ... ) CREATE TABLE TABLE_A (id BIGINT, name STRING, mood MOOD, PRIMARY KEY(id)) --- test_block: name: enum-tests tests: - - query: SELECT * From TABLE_A where mood CONFUSED - unorderedResult: [{2, bar, CONFUSED}, {11, plugh, CONFUSED}]你可以参考现成用例 enum.yamsql 感受这种写法——不写一行 Java 就能验证 SQL 语义。四种连接/版本配置的 YAML 测试任务任务运行方式适用场景./gradlew quickTest仅 embedded 直连配置日常开发迭代最快./gradlew rpcTestJDBC gRPC 内存传输验证请求序列化开发 RPC 协议相关功能./gradlew singleVersionTest同一版本的多台外部服务器服务端部署验证./gradlew mixedModeTest当前版本与旧版本交替运行验证数据与 continuation 向后兼容兼容性回归默认覆盖最近 10 个版本mixedModeTest还支持用-Ptests.mixedModeVersion${version}锁定单个旧版本便于复现特定版本的兼容性问题。八、进阶工作流复刻 Nightly 构建与发布本地快照若想模拟官方 Nightly 构建含超慢测试与随机参数追加以下属性即可./gradlew test -Ptests.nightly -Ptests.includeRandom -Ptests.iterations2 -PspotbugsEnableHtmlReport其中tests.nightly会放开 20 分钟超时并容忍失败跑完全部测试再看报告tests.includeRandom启用随机种子测试并随机切换系统 locale用于揪出隐式依赖英文 locale 的代码。若要在其他项目中引用你本地构建的库一条命令发布到本地 Maven 仓库./gradlew publishToMavenLocal -PpublishBuildtrue产物落在~/.m2/repository/org/foundationdb/fdb-record-layer-core/下可直接作为SNAPSHOT依赖引入。结语至此你已掌握 FDB Record Layer 从源码构建的完整链路javaToolchains检查环境 →build -x test快速编译 →fdbcli验证集群 →test/check跑通测试 →quickTest/mixedModeTest执行 YAML 集成测试。官方构建文档 Building.md 与贡献指南 CONTRIBUTING.md 是继续深入的最佳入口祝构建顺利 【免费下载链接】fdb-record-layerA relational database with SQL support built on FoundationDB项目地址: https://gitcode.com/gh_mirrors/fd/fdb-record-layer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表