<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Testing on C4H</title><link>/tags/testing/</link><description>Recent content in Testing 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/testing/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-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></channel></rss>