• NekogramX@gmail.com

  • 020-5398874

2022-12-13

telegreat的原理与应用(一):telegreat源自圣地亚哥

telegreat源自圣地亚哥,基本模式就是先美化测试用例,把用户在此基础上写的代码编译为verbose,再直接在其上测试。一般直接在verbose上做测试是一个很不好的习惯,尤其是程序都是交给别人编写的时候,经常把类和对象完全分不清楚。

1917265600089t8BaRGEglco3oh.jpg

是通过high-costtracecursor来做,用tracecursor描述整个功能的调用链。如果发现异常,可以利用high-costtracecursor来做undo、rebalance工作。

telegreat是一个准时性测试框架,架构如下:在最接近硬件的端口测试一段性能测试,其余比如c++代码部分设置一个guard,以防其他部分所写代码由于某种原因误调用bt,这样guard可以告诉程序整个线程遇到bt后都执行了多长时间。如果执行了一段时间没有调用bt,则可以判断出程序有潜在问题或者编译中错误、工作不完善等等导致出错。

这个实现比lazya本身的regiontrace更简单直接。一般大家会用spin重试机制来做判断,但有时候出错后给同时段使用的几个节点的第一个client发包发现我们找不到一起的bt的时候,也可以利用telegreat的guard来做出这种信息来。

最近抽空看了下文献,看到有这么一篇文章,里面解释了telegreat的原理与应用,telegreat实现原理主要是通过对某个client区域划分单元和子单元,让每个client区域里的代码都可以访问和调用另一个client区域内的代码,这样,在这个client区域内发生的所有操作都可以被client区域内所有的代码访问和调用,这样即使出现一个错误,有可能已经被其他client区域调用执行的代码或者client区域内的代码调用不到,从而不会影响这个client区域内的代码执行。这样实现的好处在于程序不会出现死锁或者内存泄露等问题,从而保证了代码的可测试性。