Skip to content

回放结果的收集

Mingliang Tan edited this page Feb 15, 2019 · 1 revision

回放结果(ReplayedSession 对象)由以下部分构成

  • CallFromInbound:入口的请求,直接在inbound产生
  • ReturnInbound:最终的返回,直接在inbound收集
  • AppendFile:在 sut 里被拦截到,用于查看错误日志和比对public.log
  • SendUDP:在 sut 里被拦截到,用于知道apollo开关命中情况
  • CallOutbound:在 outbound 里收集。不仅仅有请求,还包括请求是如何被匹配的,匹配程度是多少之类的。

所以在 inbound/sut/outbound 三个线程都会产生回放结果,需要多线程同步。实现方式是用一个 Go 的 buffered channel 进行搜集。最后在inbound 里统一把结果倒出来,然后 json.Marshal 之后用 http 返回给 midi。