@@ -965,3 +965,69 @@ TEST_F(TestActionServerCancelPolicy, test_action_process_cancel_request_by_time_
965
965
EXPECT_TRUE (uuidcmp (goal_info_out->goal_id .uuid , cancel_request.goal_info .goal_id .uuid ));
966
966
EXPECT_EQ (RCL_RET_OK, rcl_action_cancel_response_fini (&cancel_response));
967
967
}
968
+
969
+ TEST_F (TestActionServer, action_server_init_fini_maybe_fail)
970
+ {
971
+ rcl_allocator_t allocator = rcl_get_default_allocator ();
972
+ rcl_ret_t ret;
973
+ rcl_init_options_t init_options = rcl_get_zero_initialized_init_options ();
974
+ ret = rcl_init_options_init (&init_options, allocator);
975
+ ASSERT_EQ (RCL_RET_OK, ret) << rcl_get_error_string ().str ;
976
+ rcl_context_t context = rcl_get_zero_initialized_context ();
977
+ ret = rcl_init (0 , nullptr , &init_options, &context);
978
+ ASSERT_EQ (RCL_RET_OK, ret) << rcl_get_error_string ().str ;
979
+
980
+ rcl_node_t node = rcl_get_zero_initialized_node ();
981
+ rcl_node_options_t node_options = rcl_node_get_default_options ();
982
+ ret = rcl_node_init (&node, " test_action_server_node" , " " , &context, &node_options);
983
+ ASSERT_EQ (RCL_RET_OK, ret) << rcl_get_error_string ().str ;
984
+ rcl_clock_t clock ;
985
+ ret = rcl_clock_init (RCL_STEADY_TIME, &clock , &allocator);
986
+ ASSERT_EQ (RCL_RET_OK, ret) << rcl_get_error_string ().str ;
987
+ const rosidl_action_type_support_t * ts = ROSIDL_GET_ACTION_TYPE_SUPPORT (test_msgs, Fibonacci);
988
+ const rcl_action_server_options_t options = rcl_action_server_get_default_options ();
989
+ const char * action_name = " test_action_server_name" ;
990
+
991
+ RCUTILS_FAULT_INJECTION_TEST (
992
+ {
993
+ rcl_action_server_t action_server = rcl_action_get_zero_initialized_server ();
994
+ rcl_ret_t ret = rcl_action_server_init (
995
+ &action_server, &node, &clock , ts, action_name, &options);
996
+
997
+ if (RCL_RET_OK == ret) {
998
+ ret = rcl_action_server_fini (&action_server, &node);
999
+ }
1000
+ });
1001
+ }
1002
+
1003
+ TEST_F (TestActionServerCancelPolicy, test_action_process_cancel_request_maybe_fail)
1004
+ {
1005
+ // Request to cancel all goals
1006
+ rcl_action_cancel_request_t cancel_request = rcl_action_get_zero_initialized_cancel_request ();
1007
+ cancel_request.goal_info .stamp .sec = 0 ;
1008
+ cancel_request.goal_info .stamp .nanosec = 0u ;
1009
+ rcl_action_cancel_response_t cancel_response = rcl_action_get_zero_initialized_cancel_response ();
1010
+
1011
+ RCUTILS_FAULT_INJECTION_TEST (
1012
+ {
1013
+ rcl_ret_t ret = rcl_action_process_cancel_request (
1014
+ &this ->action_server , &cancel_request, &cancel_response);
1015
+ (void )ret;
1016
+ EXPECT_EQ (RCL_RET_OK, rcl_action_cancel_response_fini (&cancel_response));
1017
+ });
1018
+ }
1019
+
1020
+ TEST_F (TestActionServerCancelPolicy, test_action_expire_goals_maybe_fail)
1021
+ {
1022
+ const size_t capacity = 10u ;
1023
+ rcl_action_goal_info_t expired_goals[10u ];
1024
+ size_t num_expired = 42u ;
1025
+
1026
+ RCUTILS_FAULT_INJECTION_TEST (
1027
+ {
1028
+ rcl_ret_t ret = rcl_action_expire_goals (
1029
+ &this ->action_server , expired_goals, capacity, &num_expired);
1030
+ (void )ret;
1031
+ rcl_reset_error ();
1032
+ });
1033
+ }
0 commit comments