Skip to content

Commit 4c836b6

Browse files
committed
Add fault injection test
Signed-off-by: Jorge Perez <[email protected]>
1 parent 4306e2d commit 4c836b6

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

rcl/test/rcl/test_wait.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,3 +750,32 @@ TEST_F(CLASSNAME(WaitSetTestFixture, RMW_IMPLEMENTATION), wait_set_failed_fini)
750750
rcl_reset_error();
751751
}
752752
}
753+
754+
// Test proper error handling with a fault injection test
755+
TEST_F(CLASSNAME(WaitSetTestFixture, RMW_IMPLEMENTATION), wait_set_test_maybe_init_fail) {
756+
rcl_wait_set_t wait_set = rcl_get_zero_initialized_wait_set();
757+
rcl_ret_t ret = RCL_RET_OK;
758+
rcl_allocator_t alloc = rcl_get_default_allocator();
759+
760+
RCUTILS_FAULT_INJECTION_TEST(
761+
{
762+
ret = rcl_wait_set_init(&wait_set, 1, 0, 0, 1, 1, 0, context_ptr, alloc);
763+
if (RCL_RET_OK == ret) {
764+
EXPECT_EQ(RCL_RET_OK, rcl_wait_set_fini(&wait_set));
765+
} else {
766+
EXPECT_TRUE(RCL_RET_WAIT_SET_INVALID == ret || RCL_RET_BAD_ALLOC == ret);
767+
rcl_reset_error();
768+
}
769+
});
770+
771+
RCUTILS_FAULT_INJECTION_TEST(
772+
{
773+
ret = rcl_wait_set_init(&wait_set, 1, 1, 1, 1, 1, 1, context_ptr, alloc);
774+
if (RCL_RET_OK == ret) {
775+
EXPECT_EQ(RCL_RET_OK, rcl_wait_set_fini(&wait_set));
776+
} else {
777+
EXPECT_TRUE(RCL_RET_WAIT_SET_INVALID == ret || RCL_RET_BAD_ALLOC == ret);
778+
rcl_reset_error();
779+
}
780+
});
781+
}

0 commit comments

Comments
 (0)