<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Redisraft on C4H</title><link>/tags/redisraft/</link><description>Recent content in Redisraft on C4H</description><generator>Hugo</generator><language>zh-CN</language><managingEditor>code4happy@gmail.com (happy-v587)</managingEditor><webMaster>code4happy@gmail.com (happy-v587)</webMaster><lastBuildDate>Wed, 17 Apr 2024 12:43:04 +0000</lastBuildDate><atom:link href="/tags/redisraft/index.xml" rel="self" type="application/rss+xml"/><item><title>RedisRaft - 单元测试说明</title><link>/redisraft-dan-yuan-ce-shi-shuo-ming/</link><pubDate>Wed, 17 Apr 2024 12:43:04 +0000</pubDate><author>code4happy@gmail.com (happy-v587)</author><guid>/redisraft-dan-yuan-ce-shi-shuo-ming/</guid><description>&lt;p&gt;代码目录&lt;/p&gt;
&lt;img width="399" alt="image" src="/images/redisraft-dan-yuan-ce-shi-shuo-ming.md/img-01.png"&gt;
&lt;p&gt;主要测试了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;util（对parse_slots函数测试）&lt;/li&gt;
&lt;li&gt;file（对原生read、write、flush、get、sync的包裹）&lt;/li&gt;
&lt;li&gt;log（用来维护 raft log的实现）&lt;/li&gt;
&lt;li&gt;serialization（对 redis command 序列化与反序列化的测试）&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="453" alt="image" src="/images/redisraft-dan-yuan-ce-shi-shuo-ming.md/img-02.png"&gt;</description></item><item><title>RedisRaft - 混沌测试说明</title><link>/redisraft-jepsen-ce-shi-shuo-ming/</link><pubDate>Wed, 17 Apr 2024 20:42:43 +0800</pubDate><author>code4happy@gmail.com (happy-v587)</author><guid>/redisraft-jepsen-ce-shi-shuo-ming/</guid><description>&lt;ul&gt;
&lt;li&gt;redis-raft 仓库提供了基于 docker 的运行方式
&lt;img class="tw-inline" loading="lazy" src='/images/redisraft-jepsen-ce-shi-shuo-ming.md/img-01.png' alt="image" &gt;&lt;/li&gt;
&lt;li&gt;运行的代码存储在 &lt;a href="https://github.com/redislabs/jepsen-redisraft" target="_blank" rel="noopener noreferrer"&gt;https://github.com/redislabs/jepsen-redisraft&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="关于-jepsen-redisraft-仓库的说明" class="headerLink"&gt;
 &lt;a href="#%e5%85%b3%e4%ba%8e-jepsen-redisraft-%e4%bb%93%e5%ba%93%e7%9a%84%e8%af%b4%e6%98%8e" class="header-mark"&gt;&lt;/a&gt;关于 jepsen-redisraft 仓库的说明&lt;/h3&gt;&lt;img width="359" alt="image" src="/images/redisraft-jepsen-ce-shi-shuo-ming.md/img-02.png"&gt;
&lt;p&gt;0、程序入口&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;在 project.clj 中定义了 `:main jepsen.redis.core`
然后打开 `src/jepsen.readis/core.clj` 文件
找到文件最后 `defn -main` 即为入口
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;1、【编译】如何编译 redis、redis-raft&lt;/p&gt;</description></item><item><title>RedisRaft - 集成测试说明</title><link>/redisraft-ji-cheng-ce-shi-shuo-ming/</link><pubDate>Wed, 17 Apr 2024 12:21:44 +0000</pubDate><author>code4happy@gmail.com (happy-v587)</author><guid>/redisraft-ji-cheng-ce-shi-shuo-ming/</guid><description>&lt;h3 id="两个核心的类" class="headerLink"&gt;
 &lt;a href="#%e4%b8%a4%e4%b8%aa%e6%a0%b8%e5%bf%83%e7%9a%84%e7%b1%bb" class="header-mark"&gt;&lt;/a&gt;两个核心的类&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;通过 &lt;code&gt;class RedisRaft&lt;/code&gt; 将每个节点的 &lt;code&gt;init&lt;/code&gt;、&lt;code&gt;start&lt;/code&gt;、&lt;code&gt;restart&lt;/code&gt;、&lt;code&gt;pause&lt;/code&gt;、&lt;code&gt;join&lt;/code&gt;、&lt;code&gt;transfer_leader&lt;/code&gt;、&lt;code&gt;cleanup&lt;/code&gt; 等行为进行管理（通过对 pylib subprocess 、redis cmd 的封装实现）&lt;/li&gt;
&lt;li&gt;通过 &lt;code&gt;class Cluster&lt;/code&gt; 将多个 &lt;code&gt;RedisRaft&lt;/code&gt; 进行管理，包括集群的 &lt;code&gt;create&lt;/code&gt;、&lt;code&gt;add_node&lt;/code&gt;、&lt;code&gt;remove_node&lt;/code&gt;、&lt;code&gt;pause_leader&lt;/code&gt; 等行为（通过对redis cmd、RedisRaft类的封装实现）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有上面两个给力的 &lt;code&gt;class&lt;/code&gt; 后，在执行测试case时对集群的生命周期管理就变得非常简单了。&lt;/p&gt;</description></item><item><title>RedisRaft - 使用说明</title><link>/redisraft-jepsen-guan-yu-shi-yong/</link><pubDate>Sun, 14 Apr 2024 06:33:51 +0000</pubDate><author>code4happy@gmail.com (happy-v587)</author><guid>/redisraft-jepsen-guan-yu-shi-yong/</guid><description>&lt;p&gt;从官方仓库看测试可以分为两大类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;功能测试：即单元测试、集成测试，https://github.com/RedisLabs/redisraft/tree/master/tests&lt;/li&gt;
&lt;li&gt;正确性测试：即混动工程测试，https://github.com/RedisLabs/redisraft/tree/master/jepsen&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="一功能测试" class="headerLink"&gt;
 &lt;a href="#%e4%b8%80%e5%8a%9f%e8%83%bd%e6%b5%8b%e8%af%95" class="header-mark"&gt;&lt;/a&gt;一、功能测试&lt;/h2&gt;&lt;p&gt;基于docker运行测试case&lt;/p&gt;</description></item></channel></rss>