成为tikv贡献者第一天:搭建环境

本文是TiKV (版本7.0 )源码阅读,成为 TiKV Contributors 第一篇文章

目标:

  • 小白如何学习一个开源项目,先让它跑起来。

  • 主要介绍 gdb如何调试tikv,运行单元测试。

  • 搭建一个单机TiKV 服务。

开发环境:gitpod

主要电脑配置太低了,开始使用Gitpod

Gitpod 是一个开源 Kubernetes 应用程序(GitHub 仓库地址 GitHub - gitpod-io/gitpod: The developer platform for on-demand cloud development environments to create software faster and more securely.),

适用于可直接编写代码的开发环境,可为云中的每个任务提供全新的自动化开发环境。

通过Rustlings学习Rust语法

Rustlings 是一个由 Rust 团队维护的开源项目,旨在帮助你通过调试代码来学习 Rust。它也会一路为你提供提示。

这个是我的练习

成为贡献者需要掌握那些知识

TiKV 调试环境搭建:

//01-rust
curl https://sh.rustup.rs -sSf | sh
export PATH="/workspace/.cargo/bin:$PATH"
source  ~/.bashrc
rustc -V
rustc 1.77.0-nightly (89e2160c4 2023-12-27)

//02--Rust toolchain
rustup toolchain install nightly
//  nightly version 

rustup component add rustfmt
// rustfmt 是 Rust 的官方代码格式化工具,它可以根据 Rust 社区的代码风格指南自动格式化你的 Rust 代码。

rustup component add clippy
//clippy 是 Rust 的一个静态代码分析工具  cargo clippy 
// Run Rustfmt
make format
//Run Clippy (note that some lints are ignored, so `cargo clippy` will give many false positives)
make clippy

// 03-编译 https://github.com/watchpoints/tikv
make build //

cargo install cargo-watch
cargo watch -s "cargo check"  
//使用 cargo watch 的好处是,
//它可以帮助你在开发过程中快速发现编译错误,而不必每次手动运行 cargo check 或 cargo build

// 当你准备测试修改的代码,可以使用 dev 指令,它将格式化你的代码库,在启用 clippy 的情况下构建,并运行测试
make dev  //执行全部单元测试,有点慢



运行特定单元测试
cd /workspace/tikv/tests/integrations/server/kv_service.rs
#[test_case(test_raftstore::must_new_cluster_and_kv_client)]
#[test_case(test_raftstore_v2::must_new_cluster_and_kv_client)]

执行特定单元测试
cargo test test_rawkv  //LLVM ERROR: IO failure on output stream: No space left on device 30空间没有了。
//是否包含debug信息
RUSTFLAGS=-Cdebuginfo=2 make dev
RUSTFLAGS=-Cdebuginfo=2 cargo build
//RUSTFLAGS=-Cdebuginfo=2 (for full debuginfo)

TiKV 使用 test_raftstore 等组件作为测试和 mock 框架

调试

  • rust-analyzer 运行单元测试

  • gdb 调试
    后面购买自己服务器在使用

单节点集群部署

主要gipod 磁盘空间满了。这个网上例子很多 不在赘述。

2 个赞

学习让人进步。 :100: