【发布时间】:2014-09-18 11:34:47
【问题描述】:
我有一个使用 nacl_io 的 NaCl 程序。我正在寻找一种在不依赖浏览器的情况下对其运行自动化测试的方法。只要我不使用套接字,使用 set_ldr 运行可执行文件似乎就可以完成这项工作。例如,我可以使用 mkdir() 并创建文件。 但是,在我的程序中调用 socket() 失败并显示“权限被拒绝”。
我使用套接字这一事实是否意味着我必须在浏览器中运行测试?
如果是这样,自动化此类测试的最佳方法是什么?
【问题讨论】:
我有一个使用 nacl_io 的 NaCl 程序。我正在寻找一种在不依赖浏览器的情况下对其运行自动化测试的方法。只要我不使用套接字,使用 set_ldr 运行可执行文件似乎就可以完成这项工作。例如,我可以使用 mkdir() 并创建文件。 但是,在我的程序中调用 socket() 失败并显示“权限被拒绝”。
我使用套接字这一事实是否意味着我必须在浏览器中运行测试?
如果是这样,自动化此类测试的最佳方法是什么?
【问题讨论】:
没有办法使用来自 sel_ldr 的真实套接字,但您可以使用测试假货。
对于 nacl_io 测试,我们使用具有简单实现的假 Pepper 接口。见https://code.google.com/p/chromium/codesearch#chromium/src/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/。
我们还没有实现一个假套接字接口,但它应该是可能的。您需要实现以下接口:
然后在你的测试中初始化 nacl_io 时,传入你自己的 PPB_GetInterface 回调:
const void *my_get_interface(const char* interface_name) {
if (strcmp(interface_name, PPB_MESSAGE_LOOP_INTERFACE_1_0) == 0) {
return my_fake_message_loop_interface;
} else if (...) {
...
}
nacl_io_init_ppapi(pp_instance, my_get_interface);
【讨论】: