@@ -25,11 +25,17 @@ include(GoogleTest)
2525option (INTEGRATION_TESTS "Build the integration tests that require a running robot / URSim" OFF )
2626option (POLYSCOPE_X_TESTS_WITH_REMOTE_CONTROL "Run Polyscope X tests that require remote control" OFF )
2727option (CHECK_RTDE_DOCS_RECIPE "Fetch the RTDE documentation to auto-generate a recipe containing all output fields and check that with the RTDE client. Requires python3 and pandas and an internet connection." OFF )
28+ set (INTEGRATION_TESTS_ROBOT_IP "" CACHE STRING "If set, override the default robot IP (192.168.56.101) compiled into each integration test main() by passing --robot_ip <ip> to every ctest-registered integration test." )
2829# Build Tests
2930if (INTEGRATION_TESTS)
30- # Integration tests require a robot reachable at 192.168.56.101. Therefore, they have to be
31- # activated separately.
32-
31+ # Integration tests require a reachable robot / URSim. The compiled-in default
32+ # address is 192.168.56.101; configure with -DINTEGRATION_TESTS_ROBOT_IP=<ip>
33+ # to override (e.g. 127.0.0.1 for a host-networked URSim).
34+ set (INTEGRATION_TESTS_ROBOT_IP_ARG "" )
35+ if (INTEGRATION_TESTS_ROBOT_IP)
36+ set (INTEGRATION_TESTS_ROBOT_IP_ARG --robot_ip ${INTEGRATION_TESTS_ROBOT_IP} )
37+ endif ()
38+
3339 if (POLYSCOPE_X_TESTS_WITH_REMOTE_CONTROL)
3440 add_compile_definitions (POLYSCOPE_X_TESTS_WITH_REMOTE_CONTROL=1 )
3541 endif ()
@@ -38,6 +44,7 @@ if (INTEGRATION_TESTS)
3844 target_link_libraries (rtde_tests PRIVATE ur_client_library::urcl GTest::gtest_main )
3945 gtest_add_tests (TARGET rtde_tests
4046 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR }
47+ EXTRA_ARGS ${INTEGRATION_TESTS_ROBOT_IP_ARG}
4148 )
4249 # Bound this teardown regression test so a hang fails CI fast instead of timing out the job.
4350 set_tests_properties (RTDEClientTest.destructor_not_blocked_by_stuck_reconnect_thread
@@ -52,27 +59,29 @@ if (INTEGRATION_TESTS)
5259 add_executable (dashboard_client_g5_tests test_dashboard_client_g5.cpp )
5360 target_link_libraries (dashboard_client_g5_tests PRIVATE ur_client_library::urcl GTest::gtest_main )
5461 gtest_add_tests (TARGET dashboard_client_g5_tests
62+ EXTRA_ARGS ${INTEGRATION_TESTS_ROBOT_IP_ARG}
5563 )
5664
5765 add_executable (dashboard_client_x_tests test_dashboard_client_x.cpp )
5866 target_link_libraries (dashboard_client_x_tests PRIVATE ur_client_library::urcl GTest::gtest_main )
5967 gtest_add_tests (TARGET dashboard_client_x_tests
6068 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR }
69+ EXTRA_ARGS ${INTEGRATION_TESTS_ROBOT_IP_ARG}
6170 )
6271
6372 # Spline tests
6473 add_executable (spline_tests_urcap test_spline_interpolation.cpp )
6574 target_link_libraries (spline_tests_urcap PRIVATE ur_client_library::urcl GTest::gtest_main )
6675 gtest_add_tests (TARGET spline_tests_urcap
6776 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR }
68- EXTRA_ARGS --headless false
77+ EXTRA_ARGS --headless false ${INTEGRATION_TESTS_ROBOT_IP_ARG}
6978 TEST_SUFFIX _urcap
7079 )
7180 add_executable (spline_tests_headless test_spline_interpolation.cpp )
7281 target_link_libraries (spline_tests_headless PRIVATE ur_client_library::urcl GTest::gtest_main )
7382 gtest_add_tests (TARGET spline_tests_headless
7483 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR }
75- EXTRA_ARGS --headless true
84+ EXTRA_ARGS --headless true ${INTEGRATION_TESTS_ROBOT_IP_ARG}
7685 TEST_SUFFIX _headless
7786 )
7887
@@ -81,14 +90,14 @@ if (INTEGRATION_TESTS)
8190 target_link_libraries (ur_driver_tests_urcap PRIVATE ur_client_library::urcl GTest::gtest_main )
8291 gtest_add_tests (TARGET ur_driver_tests_urcap
8392 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR }
84- EXTRA_ARGS --headless false
93+ EXTRA_ARGS --headless false ${INTEGRATION_TESTS_ROBOT_IP_ARG}
8594 TEST_SUFFIX _urcap
8695 )
8796 add_executable (ur_driver_tests_headless test_ur_driver.cpp )
8897 target_link_libraries (ur_driver_tests_headless PRIVATE ur_client_library::urcl GTest::gtest_main )
8998 gtest_add_tests (TARGET ur_driver_tests_headless
9099 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR }
91- EXTRA_ARGS --headless true
100+ EXTRA_ARGS --headless true ${INTEGRATION_TESTS_ROBOT_IP_ARG}
92101 TEST_SUFFIX _headless
93102 )
94103
@@ -97,14 +106,14 @@ if (INTEGRATION_TESTS)
97106 target_link_libraries (external_control_program_tests_urcap PRIVATE ur_client_library::urcl GTest::gtest_main )
98107 gtest_add_tests (TARGET external_control_program_tests_urcap
99108 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR }
100- EXTRA_ARGS --headless false
109+ EXTRA_ARGS --headless false ${INTEGRATION_TESTS_ROBOT_IP_ARG}
101110 TEST_SUFFIX _urcap
102111 )
103112 add_executable (external_control_program_tests_headless test_external_control_program.cpp )
104113 target_link_libraries (external_control_program_tests_headless PRIVATE ur_client_library::urcl GTest::gtest_main )
105114 gtest_add_tests (TARGET external_control_program_tests_headless
106115 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR }
107- EXTRA_ARGS --headless true
116+ EXTRA_ARGS --headless true ${INTEGRATION_TESTS_ROBOT_IP_ARG}
108117 TEST_SUFFIX _headless
109118 )
110119
@@ -113,27 +122,29 @@ if (INTEGRATION_TESTS)
113122 target_link_libraries (instruction_executor_test_urcap PRIVATE ur_client_library::urcl GTest::gtest_main )
114123 gtest_add_tests (TARGET instruction_executor_test_urcap
115124 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR }
116- EXTRA_ARGS --headless false
125+ EXTRA_ARGS --headless false ${INTEGRATION_TESTS_ROBOT_IP_ARG}
117126 TEST_SUFFIX _urcap
118127 )
119128 add_executable (instruction_executor_test_headless test_instruction_executor.cpp )
120129 target_link_libraries (instruction_executor_test_headless PRIVATE ur_client_library::urcl GTest::gtest_main )
121130 gtest_add_tests (TARGET instruction_executor_test_headless
122131 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR }
123- EXTRA_ARGS --headless true
132+ EXTRA_ARGS --headless true ${INTEGRATION_TESTS_ROBOT_IP_ARG}
124133 TEST_SUFFIX _headless
125134 )
126135
127136 add_executable (primary_client_test_headless test_primary_client.cpp fake_primary_server.cpp )
128137 target_link_libraries (primary_client_test_headless PRIVATE ur_client_library::urcl GTest::gtest_main )
129138 gtest_add_tests (TARGET primary_client_test_headless
130139 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR }
140+ EXTRA_ARGS ${INTEGRATION_TESTS_ROBOT_IP_ARG}
131141 )
132142
133143 add_executable (ur_driver_deprecated_constructor_test test_deprecated_ur_driver_construction.cpp )
134144 target_link_libraries (ur_driver_deprecated_constructor_test PRIVATE ur_client_library::urcl GTest::gtest_main )
135145 gtest_add_tests (TARGET ur_driver_deprecated_constructor_test
136146 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR }
147+ EXTRA_ARGS ${INTEGRATION_TESTS_ROBOT_IP_ARG}
137148 )
138149else ()
139150 message (STATUS "Skipping integration tests." )
0 commit comments