FIDL兼容性测试


英文原文快照


针对不同FIDL绑定的兼容性集成测试。

测试运行器(test runner)位于//garnet/bin/fidl_compatibility_test//topaz/bin/fidl_compatibility_test,并可以在设备上调用:

  1. run /pkgfs/packages/fidl_compatibility_test/0/test/fidl_compatibility_test

topaz版本中所测试的语言比garnet版本中的更多。

其基本逻辑类似于:

  1. servers = ['go_server', 'cc_server', ...]
  2. for proxy_name in servers:
  3. for server_name in servers:
  4. proxy = <connect to proxy>
  5. struct = <construct complicated struct>
  6. resp = proxy.EchoStruct(struct, server_name)
  7. assert_equal(struct, resp)

服务端应该使用类似以下的逻辑实现compatibility_test_service.fidl中定义的服务:

  1. def EchoStruct(
  2. Struct value, string forward_to_server, EchoStructCallback callback):
  3. if value.forward_to_server:
  4. other_server = <start server with LaunchPad>
  5. # 设置forward_to_server为""以防止递归
  6. other_server.EchoStruct(value, "", callback)
  7. else:
  8. callback(value)

EchoStructNoRetVal()的逻辑也是类似的。 测试端等待接收EchoEvent()事件而不是直接等待响应,并且服务端发送EchoEvent()而不是直接回调客户端。