TongxiJi / shadowsocks-java

shadowsocks server base on netty4 , tcp & udp full support,
MIT License
275 stars 77 forks source link

话说你是怎么做单元测试的啊?直接用ss客户端来测的么… #15

Closed mokitoo closed 5 years ago

mokitoo commented 5 years ago

你是怎么做单元测试的啊?直接用ss客户端来测的么…这样的话岂不是很麻烦,如果要测单个请求的话,有什么好方法么

TongxiJi commented 5 years ago

拿sslocal跑啊

mokitoo commented 5 years ago

sslocal 我理解也是一个客户端,那么是怎么模拟发起一个请求的呢?

mokitoo commented 5 years ago

比如我想模拟一个tcp请求在server的流转流程的话,怎么测试比较方便呢?

TongxiJi commented 5 years ago

java直接写网络测试请求不方便... 建议用别的语言测比如go python什么的....

mokitoo commented 5 years ago

你看看下面这个数据流出顺序对嘛?

  1. HttpSimpleHandler(如果启用了的话) -->
  2. SSServerCheckerReceive (ss-in) -->
  3. SSCipherCodec(ss-cypt,入站流程,调用decode方法)---->
  4. SSProtocolCodec (ss-protocol,入站流程,调用decode方法)---> 5.SSServerTcpProxyHandler(ss-proxy,执行tcp连接的部分) --->
    6.GlobalTrafficShapingHandler(统计流量) --->
  5. SSServerCheckerSend (ss-out,出站流程,SimpleChannelOutboundHandler)
mokitoo commented 5 years ago

java直接写网络测试请求不方便... 建议用别的语言测比如go python什么的....

你平时是怎么debug的啊? 它这种异步的流程,直接调用sslocal打断点不好测吧?还是要测单个请求啊

TongxiJi commented 5 years ago

....我就sslocal打断点测得。。。

mokitoo commented 5 years ago

那样的话,比如你打开一个YouTube,不是会有一堆请求发过来么,然后因为是异步执行的,你的断点会乱跳,没法正常去跟踪流程啊?

TongxiJi commented 5 years ago

用单个连接的应用测试流程啊,youtube这种没法测。

mokitoo commented 5 years ago

我想不出来有哪个网站会有单个连接的了 = = ,还有我上面发的那个数据流转顺序你看是对的嘛?

TongxiJi commented 5 years ago

每个方法打下日志,再代理访问一个404 ,不就全出来了嘛

mokitoo commented 5 years ago

比如顺序是 方法 1 --> 方法2 --->方法3 由于是异步的, 第一个请求执行到方法2,断点停在这 然后 第二,第三个,第N个请求的断点都被拦截在方法 1,就没法好好看第一个请求到底往下执行到哪了。。。。。

TongxiJi commented 5 years ago

想看流程logger就搞定了, 不需要debug

mokitoo commented 5 years ago

哈哈,行吧,你有telegram吗? 私信一个方便聊天啊

TongxiJi commented 5 years ago

closeyes

TongxiJi commented 5 years ago

wstony,是这个忘记了。