[banjo][test] Use zx handle wrappers.
Tested: runtests
Change-Id: I65e22fd69ae04f08c2ebdbfabbf9030cde1196d0
diff --git a/system/banjo/ddk-protocol-test/test.banjo b/system/banjo/ddk-protocol-test/test.banjo
index 38fe1c8..2568e3d 100644
--- a/system/banjo/ddk-protocol-test/test.banjo
+++ b/system/banjo/ddk-protocol-test/test.banjo
@@ -17,7 +17,7 @@
Callback() -> (zx.status s, TestReport report);
};
-[Layout = "ddk-protocol", DefaultProtocol]
+[Layout = "ddk-protocol", DefaultProtocol, HandleWrappers]
interface Test {
/// Sets test output socket.
SetOutputSocket(handle<socket> @handle) -> ();
diff --git a/system/dev/misc/test/test.cpp b/system/dev/misc/test/test.cpp
index 47f6795..283c982 100644
--- a/system/dev/misc/test/test.cpp
+++ b/system/dev/misc/test/test.cpp
@@ -34,8 +34,8 @@
void DdkRelease();
// Methods required by the TestProtocol mixin
- void TestSetOutputSocket(zx_handle_t handle);
- void TestGetOutputSocket(zx_handle_t* output_handle);
+ void TestSetOutputSocket(zx::socket socket);
+ void TestGetOutputSocket(zx::socket* out_socket);
void TestSetTestFunc(const test_func_t* func);
zx_status_t TestRunTests(test_report_t* out_report);
void TestDestroy();
@@ -69,12 +69,12 @@
char* path_out, size_t path_size, size_t* path_actual);
};
-void TestDevice::TestSetOutputSocket(zx_handle_t handle) {
- output_.reset(handle);
+void TestDevice::TestSetOutputSocket(zx::socket socket) {
+ output_ = std::move(socket);
}
-void TestDevice::TestGetOutputSocket(zx_handle_t* output_handle) {
- *output_handle = output_.get();
+void TestDevice::TestGetOutputSocket(zx::socket* out_socket) {
+ output_.duplicate(ZX_RIGHT_SAME_RIGHTS, out_socket);
}
void TestDevice::TestSetTestFunc(const test_func_t* func) {
@@ -95,7 +95,7 @@
static zx_status_t fidl_SetOutputSocket(void* ctx, zx_handle_t raw_socket) {
zx::socket socket(raw_socket);
auto dev = static_cast<TestDevice*>(ctx);
- dev->TestSetOutputSocket(socket.release());
+ dev->TestSetOutputSocket(std::move(socket));
return ZX_OK;
}
@@ -135,7 +135,7 @@
if (inlen != sizeof(zx_handle_t)) {
return ZX_ERR_INVALID_ARGS;
}
- TestSetOutputSocket(*(zx_handle_t*)in);
+ TestSetOutputSocket(zx::socket(*static_cast<const zx_handle_t*>(in)));
return ZX_OK;
case IOCTL_TEST_RUN_TESTS: {
diff --git a/system/dev/test/ddk-test/ddk-test.c b/system/dev/test/ddk-test/ddk-test.c
index 0bc76a1..b1e0927 100644
--- a/system/dev/test/ddk-test/ddk-test.c
+++ b/system/dev/test/ddk-test/ddk-test.c
@@ -52,6 +52,8 @@
memset(report, 0, sizeof(*report));
update_test_report(unittest_run_one_test(test_case_ddk_metadata, TEST_ALL), report);
update_test_report(unittest_run_one_test(test_case_ddk_usb_request, TEST_ALL), report);
+ unittest_restore_output_function();
+ zx_handle_close(output);
return report->n_failed == 0 ? ZX_OK : ZX_ERR_INTERNAL;
}
diff --git a/system/ulib/ddktl/test/ddktl-test.cpp b/system/ulib/ddktl/test/ddktl-test.cpp
index fd334b2..a91fc55 100644
--- a/system/ulib/ddktl/test/ddktl-test.cpp
+++ b/system/ulib/ddktl/test/ddktl-test.cpp
@@ -57,6 +57,8 @@
memset(report, 0, sizeof(*report));
update_test_report(unittest_run_one_test(test_case_ddktl_device, TEST_ALL), report);
update_test_report(unittest_run_one_test(test_case_ddktl_ethernet_device, TEST_ALL), report);
+ unittest_restore_output_function();
+ zx_handle_close(output);
return report->n_failed == 0 ? ZX_OK : ZX_ERR_INTERNAL;
}