获取依赖关系图API [pact-broker]

时间:2018-06-13 21:57:00

标签: testing pact pact-broker

有没有办法从Pact Broker获得所有合同的完整依赖关系图(最好是json格式)?

图中使用了一个API调用:https://<broker-url>/groups/<service>.csv来获取绘制图形的数据,但这对解析并不好,需要调用才能找到所有服务,然后调用每个服务来获取依赖。

使用json格式的完整依赖关系图进行一次调用会很不错。

1 个答案:

答案 0 :(得分:1)

是的!在代理中内置了一个HAL浏览器,使您可以以编程方式跟踪图形。

例如,您可以运行这样的查询,并在您需要的属性子集上使用jq进行过滤,并重新排序输出:

curl -v -u 'dXfltyFMgNOFZAxr8io9wJ37iUpY42M:O5AIZWxelWbLvqMd8PkAVycBJh2Psyg1' https://test.pact.dius.com.au/pacts/latest | jq '.pacts[]._embedded | select(.consumer.name | contains("AWSSummiteer")) | .consumer.name + "->" + .provider.name'

产生类似的东西:

"AWSSummiteerSentimentSNSProvider->AWSSummiteerTwitterSNSProvider"
"AWSSummiteerTwitterSNSConsumer->AWSSummiteerTwitterSNSProvider"
"AWSSummiteerTwitterSNSProvider->Twitter"
"AWSSummiteerWeb->AWSSummiteerIoT"
"AWSSummiteerWeb->AWSSummiteerIoTPresignedUrl"
"AWSSummiteerWeb->AWSSummiteerSentimentSNSProvider"
"AWSSummiteerWeb->AWSSummiteerTwitterSNSConsumer"
"AWSSummiteerWeb->AWSSummiteerWeb"

你可以输入graphviz来创建漂亮的图表,当然你可以把它翻译成你喜欢的任何格式。

以下是完整的graphviz可视化:

echo "digraph { ranksep=3; ratio=auto; overlap=false; node [  shape = plaintext, fontname = "Helvetica" ];" > latest.dot ; curl -v -u 'dXfltyFMgNOFZAxr8io9wJ37iUpY42M:O5AIZWxelWbLvqMd8PkAVycBJh2Psyg1' https://test.pact.dius.com.au/pacts/latest | jq '.pacts[]._embedded | select(.consumer.name | contains("AWSSummiteer")) | .consumer.name + "->" + .provider.name' | tr -d '"' |  sed 's/-/_/g' | sed 's/_>/->/g' >> latest.dot; echo "}" >> latest.dot
dot latest.dot -otest.png -Tpng

创造了这张漂亮的照片:

Dummy architecture