ovn ovs ctl 和 libovsdb mock 的 db 进行交互

97 阅读1分钟

由于最近在搞 ut,遇到一些二进制 mock 比较麻烦的地方,也尝试了一些想法

image.png

比如,是否可以基于 ovn-nbctl 连接到 libovsdb mock 出的内存中的数据库

其实是不行的,大概是这个原因: libovsdb 是一个 go 实现的 ovs 数据库代理,对于 ovs db 而言,它其实也是个客户端。 ovn-nbctl 本身设计上不是和 libovsdb 交互的,而是和 ovs db 直接交互的,即使 服务端已经返回数据了,但是 ovn-nbctl 解析不了,所以无法基于这种思路来 mock。

image.png

ovsctl 应该是是可以的

但是我 mock 的数据库目前缺少一些关键信息

image.png

将客户端版本和服务端保持一致后,测试,问题和 ovn-nbctl 一致: jsonrpc 和 libovsdb 的解析不太一样,总会在 newMonitorRequest 解析时出问题。

image.png