FIDL兼容性测试
针对不同FIDL绑定的兼容性集成测试。
测试运行器(test runner)位于//garnet/bin/fidl_compatibility_test
和//topaz/bin/fidl_compatibility_test
,并可以在设备上调用:
run /pkgfs/packages/fidl_compatibility_test/0/test/fidl_compatibility_test
topaz版本中所测试的语言比garnet版本中的更多。
其基本逻辑类似于:
servers = ['go_server', 'cc_server', ...]
for proxy_name in servers:
for server_name in servers:
proxy = <connect to proxy>
struct = <construct complicated struct>
resp = proxy.EchoStruct(struct, server_name)
assert_equal(struct, resp)
服务端应该使用类似以下的逻辑实现compatibility_test_service.fidl中定义的服务:
def EchoStruct(
Struct value, string forward_to_server, EchoStructCallback callback):
if value.forward_to_server:
other_server = <start server with LaunchPad>
# 设置forward_to_server为""以防止递归
other_server.EchoStruct(value, "", callback)
else:
callback(value)
EchoStructNoRetVal()
的逻辑也是类似的。
测试端等待接收EchoEvent()
事件而不是直接等待响应,并且服务端发送EchoEvent()
而不是直接回调客户端。