+
+TEST_F(LaunchTest, aul_terminate_pid_async_v2_P) {
+ int cmd = -1;
+ EXPECT_CALL(GetMock<SocketMock>(), socket(_, _, _))
+ .Times(1);
+ EXPECT_CALL(GetMock<SocketMock>(), connect(_, _, _))
+ .Times(1);
+ EXPECT_CALL(GetMock<SocketMock>(), send(_, _, _, _))
+ .Times(1)
+ .WillOnce(Invoke([&](int fd, const void* buf, size_t n, int flags)
+ -> ssize_t {
+ const app_pkt_t* header = reinterpret_cast<const app_pkt_t*>(buf);
+ cmd = header->cmd;
+ return n;
+ }));
+ EXPECT_CALL(GetMock<SocketMock>(), recv(_, _, _, _))
+ .Times(1)
+ .WillOnce(Invoke([](int fd, void* buf, size_t n, int flags)
+ -> ssize_t {
+ int ret = 0;
+ memcpy(buf, &ret, sizeof(int));
+ return sizeof(int);
+ }));
+ EXPECT_CALL(GetMock<GlibMock>(), g_unix_fd_add(_, _, _, _))
+ .Times(1)
+ .WillOnce(Invoke([&](gint fd, GIOCondition condtion,
+ GUnixFDSourceFunc func, gpointer user_data) -> guint {
+ func(fd, G_IO_IN, user_data);
+ return 1;
+ }));
+
+ int res = -1;
+ int ret = aul_terminate_pid_async_v2(1000,
+ [](int result, void* user_data) {
+ int* res_ptr = static_cast<int*>(user_data);
+ *res_ptr = result;
+ }, &res);
+ EXPECT_EQ(ret, AUL_R_OK);
+ EXPECT_EQ(cmd, APP_TERM_BY_PID);
+ EXPECT_EQ(res, AUL_R_OK);
+}
+
+TEST_F(LaunchTest, aul_terminate_app_async_P) {
+ int cmd = -1;
+ EXPECT_CALL(GetMock<SocketMock>(), socket(_, _, _))
+ .Times(1);
+ EXPECT_CALL(GetMock<SocketMock>(), connect(_, _, _))
+ .Times(1);
+ EXPECT_CALL(GetMock<SocketMock>(), send(_, _, _, _))
+ .Times(1)
+ .WillOnce(Invoke([&](int fd, const void* buf, size_t n, int flags)
+ -> ssize_t {
+ const app_pkt_t* header = reinterpret_cast<const app_pkt_t*>(buf);
+ cmd = header->cmd;
+ return n;
+ }));
+ EXPECT_CALL(GetMock<SocketMock>(), recv(_, _, _, _))
+ .Times(1)
+ .WillOnce(Invoke([](int fd, void* buf, size_t n, int flags)
+ -> ssize_t {
+ int ret = 0;
+ memcpy(buf, &ret, sizeof(int));
+ return sizeof(int);
+ }));
+ EXPECT_CALL(GetMock<GlibMock>(), g_unix_fd_add(_, _, _, _))
+ .Times(1)
+ .WillOnce(Invoke([&](gint fd, GIOCondition condtion,
+ GUnixFDSourceFunc func, gpointer user_data) -> guint {
+ func(fd, G_IO_IN, user_data);
+ return 1;
+ }));
+
+ int res = -1;
+ int ret = aul_terminate_app_async("test-app",
+ [](int result, void* user_data) {
+ int* res_ptr = static_cast<int*>(user_data);
+ *res_ptr = result;
+ }, &res);
+ EXPECT_EQ(ret, AUL_R_OK);
+ EXPECT_EQ(cmd, APP_TERMINATE);
+ EXPECT_EQ(res, AUL_R_OK);
+}
+
+TEST_F(LaunchTest, aul_kill_pid_async_P) {
+ int cmd = -1;
+ EXPECT_CALL(GetMock<SocketMock>(), socket(_, _, _))
+ .Times(1);
+ EXPECT_CALL(GetMock<SocketMock>(), connect(_, _, _))
+ .Times(1);
+ EXPECT_CALL(GetMock<SocketMock>(), send(_, _, _, _))
+ .Times(1)
+ .WillOnce(Invoke([&](int fd, const void* buf, size_t n, int flags)
+ -> ssize_t {
+ const app_pkt_t* header = reinterpret_cast<const app_pkt_t*>(buf);
+ cmd = header->cmd;
+ return n;
+ }));
+ EXPECT_CALL(GetMock<SocketMock>(), recv(_, _, _, _))
+ .Times(1)
+ .WillOnce(Invoke([](int fd, void* buf, size_t n, int flags)
+ -> ssize_t {
+ int ret = 0;
+ memcpy(buf, &ret, sizeof(int));
+ return sizeof(int);
+ }));
+ EXPECT_CALL(GetMock<GlibMock>(), g_unix_fd_add(_, _, _, _))
+ .Times(1)
+ .WillOnce(Invoke([&](gint fd, GIOCondition condtion,
+ GUnixFDSourceFunc func, gpointer user_data) -> guint {
+ func(fd, G_IO_IN, user_data);
+ return 1;
+ }));
+
+ int res = -1;
+ int ret = aul_kill_pid_async(10,
+ [](int result, void* user_data) {
+ int* res_ptr = static_cast<int*>(user_data);
+ *res_ptr = result;
+ }, &res);
+ EXPECT_EQ(ret, AUL_R_OK);
+ EXPECT_EQ(cmd, APP_KILL_BY_PID);
+ EXPECT_EQ(res, AUL_R_OK);
+}