Skip to content

Commit 6aad4ff

Browse files
committed
Make CI capable to run with urcap
1 parent cb79da8 commit 6aad4ff

File tree

7 files changed

+77
-32
lines changed

7 files changed

+77
-32
lines changed

.github/workflows/ci.yml

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,13 @@ jobs:
1515
fail-fast: false
1616
matrix:
1717
env:
18-
- DOCKER_RUN_OPTS: --network ursim_net
19-
BEFORE_INIT: 'apt-get update -qq && apt-get install -y iproute2 iputils-ping && ip addr && ping -c5 192.168.56.101'
20-
CTEST_OUTPUT_ON_FAILURE: 1
21-
ROBOT_MODEL: 'ur5'
18+
- ROBOT_MODEL: 'ur5'
2219
URSIM_VERSION: '3.14.3'
2320
PROGRAM_FOLDER: 'tests/resources/dockerursim/programs/cb3'
24-
- DOCKER_RUN_OPTS: --network ursim_net
25-
BEFORE_INIT: 'apt-get update -qq && apt-get install -y iproute2 iputils-ping && ip addr && ping -c5 192.168.56.101'
26-
CTEST_OUTPUT_ON_FAILURE: 1
27-
ROBOT_MODEL: 'ur5e'
21+
- ROBOT_MODEL: 'ur5e'
2822
URSIM_VERSION: '5.9.4'
2923
PROGRAM_FOLDER: 'tests/resources/dockerursim/programs/e-series'
30-
- DOCKER_RUN_OPTS: --network ursim_net
31-
BEFORE_INIT: 'apt-get update -qq && apt-get install -y iproute2 iputils-ping && ip addr && ping -c5 192.168.56.101'
32-
CTEST_OUTPUT_ON_FAILURE: 1
33-
ROBOT_MODEL: 'ur20'
24+
- ROBOT_MODEL: 'ur20'
3425
URSIM_VERSION: 'latest'
3526
PROGRAM_FOLDER: 'tests/resources/dockerursim/programs/e-series'
3627

@@ -39,7 +30,11 @@ jobs:
3930
- name: start ursim
4031
run: |
4132
scripts/start_ursim.sh -m $ROBOT_MODEL -v $URSIM_VERSION -p $PROGRAM_FOLDER -d
42-
env: ${{matrix.env}}
33+
env:
34+
DOCKER_RUN_OPTS: --network ursim_net
35+
ROBOT_MODEL: ${{matrix.env.ROBOT_MODEL}}
36+
URSIM_VERSION: ${{matrix.env.URSIM_VERSION}}
37+
PROGRAM_FOLDER: ${{matrix.env.PROGRAM_FOLDER}}
4338
- name: configure
4439
run: mkdir build && cd build && cmake .. -DBUILDING_TESTS=1 -DINTEGRATION_TESTS=1 -DWITH_ASAN=ON
4540
env:

tests/CMakeLists.txt

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,52 @@ if (INTEGRATION_TESTS)
3131
gtest_add_tests(TARGET dashboard_client_tests
3232
)
3333

34-
add_executable(spline_tests test_spline_interpolation.cpp)
35-
target_link_libraries(spline_tests PRIVATE ur_client_library::urcl GTest::gtest_main)
36-
gtest_add_tests(TARGET spline_tests
34+
# Spline tests
35+
add_executable(spline_tests_urcap test_spline_interpolation.cpp)
36+
target_link_libraries(spline_tests_urcap PRIVATE ur_client_library::urcl GTest::gtest_main)
37+
gtest_add_tests(TARGET spline_tests_urcap
3738
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
39+
EXTRA_ARGS --headless false
40+
TEST_SUFFIX _urcap
41+
)
42+
add_executable(spline_tests_headless test_spline_interpolation.cpp)
43+
target_link_libraries(spline_tests_headless PRIVATE ur_client_library::urcl GTest::gtest_main)
44+
gtest_add_tests(TARGET spline_tests_headless
45+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
46+
EXTRA_ARGS --headless true
47+
TEST_SUFFIX _headless
3848
)
3949

40-
add_executable(ur_driver_tests test_ur_driver.cpp)
41-
target_link_libraries(ur_driver_tests PRIVATE ur_client_library::urcl GTest::gtest_main)
42-
gtest_add_tests(TARGET ur_driver_tests
50+
# UrDriver tests
51+
add_executable(ur_driver_tests_urcap test_ur_driver.cpp)
52+
target_link_libraries(ur_driver_tests_urcap PRIVATE ur_client_library::urcl GTest::gtest_main)
53+
gtest_add_tests(TARGET ur_driver_tests_urcap
54+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
55+
EXTRA_ARGS --headless false
56+
TEST_SUFFIX _urcap
57+
)
58+
add_executable(ur_driver_tests_headless test_ur_driver.cpp)
59+
target_link_libraries(ur_driver_tests_headless PRIVATE ur_client_library::urcl GTest::gtest_main)
60+
gtest_add_tests(TARGET ur_driver_tests_headless
4361
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
62+
EXTRA_ARGS --headless true
63+
TEST_SUFFIX _headless
4464
)
4565

46-
add_executable(instruction_executor_test test_instruction_executor.cpp)
47-
target_link_libraries(instruction_executor_test PRIVATE ur_client_library::urcl GTest::gtest_main)
48-
gtest_add_tests(TARGET instruction_executor_test
66+
# InstructionExecutor tests
67+
add_executable(instruction_executor_test_urcap test_instruction_executor.cpp)
68+
target_link_libraries(instruction_executor_test_urcap PRIVATE ur_client_library::urcl GTest::gtest_main)
69+
gtest_add_tests(TARGET instruction_executor_test_urcap
70+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
71+
EXTRA_ARGS --headless false
72+
TEST_SUFFIX _urcap
73+
)
74+
add_executable(instruction_executor_test_headless test_instruction_executor.cpp)
75+
target_link_libraries(instruction_executor_test_headless PRIVATE ur_client_library::urcl GTest::gtest_main)
76+
gtest_add_tests(TARGET instruction_executor_test_headless
4977
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
78+
EXTRA_ARGS --headless true
79+
TEST_SUFFIX _headless
5080
)
5181
else()
5282
message(STATUS "Skipping integration tests.")
521 Bytes
Binary file not shown.
543 Bytes
Binary file not shown.

tests/test_instruction_executor.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
// -- END LICENSE BLOCK ------------------------------------------------
3030

3131
#include <gtest/gtest.h>
32+
#include <iostream>
3233
#include <thread>
3334
#include "ur_client_library/ur/instruction_executor.h"
3435
#include "ur_client_library/control/motion_primitives.h"
@@ -43,6 +44,7 @@ const std::string OUTPUT_RECIPE = "resources/rtde_output_recipe.txt";
4344
const std::string INPUT_RECIPE = "resources/rtde_input_recipe.txt";
4445
const std::string CALIBRATION_CHECKSUM = "calib_12788084448423163542";
4546
std::string ROBOT_IP = "192.168.56.101";
47+
bool g_HEADLESS = true;
4648

4749
std::unique_ptr<ExampleRobotWrapper> g_my_robot;
4850

@@ -54,8 +56,7 @@ class InstructionExecutorTest : public ::testing::Test
5456
static void SetUpTestSuite()
5557
{
5658
// Setup driver
57-
bool headless_mode = false;
58-
g_my_robot = std::make_unique<ExampleRobotWrapper>(ROBOT_IP, OUTPUT_RECIPE, INPUT_RECIPE, headless_mode,
59+
g_my_robot = std::make_unique<ExampleRobotWrapper>(ROBOT_IP, OUTPUT_RECIPE, INPUT_RECIPE, g_HEADLESS,
5960
"external_control.urp", SCRIPT_FILE);
6061
}
6162
void SetUp() override
@@ -279,6 +280,12 @@ int main(int argc, char* argv[])
279280
ROBOT_IP = argv[i + 1];
280281
break;
281282
}
283+
if (std::string(argv[i]) == "--headless" && i + 1 < argc)
284+
{
285+
std::string headless = argv[i + 1];
286+
g_HEADLESS = headless == "true" || headless == "1" || headless == "True" || headless == "TRUE";
287+
break;
288+
}
282289
}
283290

284291
return RUN_ALL_TESTS();

tests/test_spline_interpolation.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ const std::string OUTPUT_RECIPE = "resources/rtde_output_recipe_spline.txt";
5151
const std::string INPUT_RECIPE = "resources/rtde_input_recipe.txt";
5252
const std::string CALIBRATION_CHECKSUM = "calib_12788084448423163542";
5353
std::string g_ROBOT_IP = "192.168.56.101";
54+
bool g_HEADLESS = true;
5455

5556
std::unique_ptr<ExampleRobotWrapper> g_my_robot;
5657

@@ -96,8 +97,7 @@ class SplineInterpolationTest : public ::testing::Test
9697
out_file.close();
9798

9899
// Setup driver
99-
bool headless_mode = false;
100-
g_my_robot = std::make_unique<ExampleRobotWrapper>(g_ROBOT_IP, OUTPUT_RECIPE, INPUT_RECIPE, headless_mode,
100+
g_my_robot = std::make_unique<ExampleRobotWrapper>(g_ROBOT_IP, OUTPUT_RECIPE, INPUT_RECIPE, g_HEADLESS,
101101
"external_control.urp", SPLINE_SCRIPT_FILE);
102102

103103
g_my_robot->startRTDECommununication(true);
@@ -1105,6 +1105,12 @@ int main(int argc, char* argv[])
11051105
g_ROBOT_IP = argv[i + 1];
11061106
break;
11071107
}
1108+
if (std::string(argv[i]) == "--headless" && i + 1 < argc)
1109+
{
1110+
std::string headless = argv[i + 1];
1111+
g_HEADLESS = headless == "true" || headless == "1" || headless == "True" || headless == "TRUE";
1112+
break;
1113+
}
11081114
}
11091115

11101116
return RUN_ALL_TESTS();

tests/test_ur_driver.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include <gtest/gtest.h>
3232

3333
#include <ur_client_library/ur/dashboard_client.h>
34+
#include <thread>
3435
#define private public
3536
#include <ur_client_library/ur/ur_driver.h>
3637
#include <ur_client_library/example_robot_wrapper.h>
@@ -42,6 +43,7 @@ const std::string OUTPUT_RECIPE = "resources/rtde_output_recipe.txt";
4243
const std::string INPUT_RECIPE = "resources/rtde_input_recipe.txt";
4344
const std::string CALIBRATION_CHECKSUM = "calib_12788084448423163542";
4445
std::string g_ROBOT_IP = "192.168.56.101";
46+
bool g_HEADLESS = true;
4547

4648
std::unique_ptr<ExampleRobotWrapper> g_my_robot;
4749

@@ -51,8 +53,7 @@ class UrDriverTest : public ::testing::Test
5153
static void SetUpTestSuite()
5254
{
5355
// Setup driver
54-
bool headless_mode = false;
55-
g_my_robot = std::make_unique<ExampleRobotWrapper>(g_ROBOT_IP, OUTPUT_RECIPE, INPUT_RECIPE, headless_mode,
56+
g_my_robot = std::make_unique<ExampleRobotWrapper>(g_ROBOT_IP, OUTPUT_RECIPE, INPUT_RECIPE, g_HEADLESS,
5657
"external_control.urp", SCRIPT_FILE);
5758

5859
g_my_robot->startRTDECommununication(true);
@@ -225,15 +226,15 @@ TEST_F(UrDriverTest, target_outside_limits_pose)
225226

226227
TEST_F(UrDriverTest, send_robot_program_retry_on_failure)
227228
{
228-
// Start robot program
229-
g_my_robot->resendRobotProgram();
230-
EXPECT_TRUE(g_my_robot->waitForProgramRunning(1000));
231-
232229
// Check that sendRobotProgram is robust to the secondary stream being disconnected. This is what happens when
233230
// switching from Remote to Local and back to Remote mode for example.
234231
g_my_robot->ur_driver_->secondary_stream_->close();
235232

233+
std::this_thread::sleep_for(std::chrono::milliseconds(100));
234+
236235
EXPECT_TRUE(g_my_robot->resendRobotProgram());
236+
237+
EXPECT_TRUE(g_my_robot->waitForProgramRunning());
237238
}
238239

239240
TEST_F(UrDriverTest, reset_rtde_client)
@@ -257,6 +258,12 @@ int main(int argc, char* argv[])
257258
g_ROBOT_IP = argv[i + 1];
258259
break;
259260
}
261+
if (std::string(argv[i]) == "--headless" && i + 1 < argc)
262+
{
263+
std::string headless = argv[i + 1];
264+
g_HEADLESS = headless == "true" || headless == "1" || headless == "True" || headless == "TRUE";
265+
break;
266+
}
260267
}
261268

262269
return RUN_ALL_TESTS();

0 commit comments

Comments
 (0)