test: split some tablet tests into new groups

Our CI pipeline fails 9 times out of 10 on the valgrind tests. The tests
seem to finish in either 35 min or exceed the 60 min timeout limit, with
nothing in between. To avoid this let's split into more groups so we can
a) run those more in parallel and b) are less likely to hit the
timeout when run slowly.

Analysis of recent logs shows the eraser button tests to be the worst
offender, taking 752s (due to the combinatorial explosion) alone. The
various tip and proximity tests together also take some time so let's
group those out.

Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1274>
This commit is contained in:
Peter Hutterer 2025-07-16 12:46:29 +10:00 committed by Marge Bot
parent c24ad64d18
commit 18b34d0bc0
4 changed files with 123 additions and 40 deletions

View file

@ -705,6 +705,32 @@ vm-tablet_left_handed-no-libwacom:
variables:
MESON_ARGS: '-Dlibwacom=false'
vm-tablet_proximity_tip:
extends:
- .fedora:42@test-suite-vm
variables:
SUITE_NAMES: 'tablet_proximity tablet_tip'
vm-tablet_proximity_tip-no-libwacom:
extends:
- vm-tablet_proximity_tip
stage: test-suite-no-libwacom
variables:
MESON_ARGS: '-Dlibwacom=false'
vm-tablet_eraser:
extends:
- .fedora:42@test-suite-vm
variables:
SUITE_NAMES: 'tablet_eraser'
vm-tablet_eraser-no-libwacom:
extends:
- vm-tablet_eraser
stage: test-suite-no-libwacom
variables:
MESON_ARGS: '-Dlibwacom=false'
vm-gestures:
extends:
- .fedora:42@test-suite-vm
@ -888,6 +914,32 @@ vm-valgrind-tablet_left_handed:
rules:
- if: $GITLAB_USER_LOGIN != "marge-bot"
vm-valgrind-tablet_proximity_tip:
stage: valgrind
extends:
- vm-tablet_proximity_tip
- .policy-retry-on-failure
variables:
MESON_TEST_ARGS: '--setup=valgrind'
LITEST_JOBS: 0
retry:
max: 2
rules:
- if: $GITLAB_USER_LOGIN != "marge-bot"
vm-valgrind-tablet_eraser:
stage: valgrind
extends:
- vm-tablet_eraser
- .policy-retry-on-failure
variables:
MESON_TEST_ARGS: '--setup=valgrind'
LITEST_JOBS: 0
retry:
max: 2
rules:
- if: $GITLAB_USER_LOGIN != "marge-bot"
vm-valgrind-gestures:
stage: valgrind
extends:
@ -1093,6 +1145,9 @@ check-test-suites:
libinput-test-suite-touchpad_buttons
libinput-test-suite-tablet
libinput-test-suite-tablet_left_handed
libinput-test-suite-tablet_proximity
libinput-test-suite-tablet_tip
libinput-test-suite-tablet_eraser
libinput-test-suite-gestures
libinput-test-suite-path
libinput-test-suite-udev

View file

@ -195,6 +195,13 @@ test_suites:
- name: tablet_left_handed
suites:
- tablet_left_handed
- name: tablet_proximity_tip
suites:
- tablet_proximity
- tablet_tip
- name: tablet_eraser
suites:
- tablet_eraser
- name: gestures
suites:
- gestures

View file

@ -1023,7 +1023,10 @@ if get_option('tests')
'quirks',
'switch',
'tablet',
'tablet_eraser',
'tablet_left_handed',
'tablet_proximity',
'tablet_tip',
'totem',
'touch',
'touchpad',

View file

@ -7473,41 +7473,10 @@ TEST_COLLECTION(tablet)
litest_add_no_device(tools_with_serials);
litest_add_no_device(tools_without_serials);
litest_add_for_device(tool_delayed_serial, LITEST_WACOM_HID4800_PEN);
litest_add(proximity_out_clear_buttons, LITEST_TABLET, LITEST_FORCED_PROXOUT);
litest_add(proximity_in_out, LITEST_TABLET, LITEST_ANY);
litest_add(proximity_in_button_down, LITEST_TABLET, LITEST_ANY);
litest_add(proximity_out_button_up, LITEST_TABLET, LITEST_ANY);
litest_add(proximity_has_axes, LITEST_TABLET, LITEST_ANY);
litest_add(bad_distance_events, LITEST_TABLET | LITEST_DISTANCE, LITEST_ANY);
litest_add(proximity_range_enter, LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_MOUSE, LITEST_ANY);
litest_add(proximity_range_in_out, LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_MOUSE, LITEST_ANY);
litest_add(proximity_range_button_click, LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_MOUSE, LITEST_ANY);
litest_add(proximity_range_button_press, LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_MOUSE, LITEST_ANY);
litest_add(proximity_range_button_release, LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_MOUSE, LITEST_ANY);
litest_add(proximity_out_slow_event, LITEST_TABLET | LITEST_DISTANCE, LITEST_ANY);
litest_add(proximity_out_not_during_contact, LITEST_TABLET | LITEST_DISTANCE, LITEST_ANY);
litest_add(proximity_out_not_during_buttonpress, LITEST_TABLET | LITEST_DISTANCE, LITEST_ANY);
litest_add(proximity_out_disables_forced, LITEST_TABLET, LITEST_FORCED_PROXOUT|LITEST_TOTEM);
litest_add(proximity_out_disables_forced_after_forced, LITEST_TABLET, LITEST_FORCED_PROXOUT|LITEST_TOTEM);
litest_add_no_device(proximity_out_on_delete);
litest_add(button_down_up, LITEST_TABLET, LITEST_ANY);
litest_add(button_seat_count, LITEST_TABLET, LITEST_ANY);
litest_add_no_device(button_up_on_delete);
litest_add(tip_down_up, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_down_prox_in, LITEST_TABLET, LITEST_ANY);
litest_add(tip_up_prox_out, LITEST_TABLET, LITEST_ANY);
litest_add(tip_down_btn_change, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_up_btn_change, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_down_motion, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_up_motion, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_down_up_eraser, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_with_parameters(params, "axis", 'I', 2, litest_named_i32(ABS_X), litest_named_i32(ABS_Y)) {
litest_add_parametrized(tip_up_motion_one_axis, LITEST_TABLET|LITEST_HOVER, LITEST_ANY, params);
}
litest_add(tip_state_proximity, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_state_axis, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_state_button, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add_no_device(tip_up_on_delete);
litest_add(motion, LITEST_TABLET, LITEST_ANY);
litest_add(motion_event_state, LITEST_TABLET, LITEST_ANY);
litest_add_for_device(motion_outside_bounds, LITEST_WACOM_CINTIQ_24HD_PEN);
@ -7526,6 +7495,7 @@ TEST_COLLECTION(tablet)
litest_add(mouse_buttons, LITEST_TABLET | LITEST_TOOL_MOUSE, LITEST_ANY);
litest_add(mouse_rotation, LITEST_TABLET | LITEST_TOOL_MOUSE, LITEST_ANY);
litest_add(mouse_wheel, LITEST_TABLET | LITEST_TOOL_MOUSE, LITEST_WHEEL);
litest_add(airbrush_tool, LITEST_TABLET, LITEST_ANY);
litest_add(airbrush_slider, LITEST_TABLET, LITEST_ANY);
litest_add(artpen_tool, LITEST_TABLET, LITEST_ANY);
@ -7604,15 +7574,6 @@ TEST_COLLECTION(tablet)
}
litest_add_for_device(tablet_smoothing, LITEST_WACOM_HID4800_PEN);
litest_with_parameters(params,
"with-tip-down", 'b',
"configure-while-out-of-prox", 'b',
"down-when-in-prox", 'b',
"down-when-out-of-prox", 'b',
"with-motion-events", 'b') {
litest_add_parametrized(tablet_eraser_button_disabled, LITEST_TABLET, LITEST_TOTEM|LITEST_FORCED_PROXOUT, params);
}
/* clang-format on */
}
@ -7639,3 +7600,60 @@ TEST_COLLECTION(tablet_left_handed)
}
/* clang-format on */
}
TEST_COLLECTION(tablet_eraser)
{
/* clang-format off */
litest_with_parameters(params,
"with-tip-down", 'b',
"configure-while-out-of-prox", 'b',
"down-when-in-prox", 'b',
"down-when-out-of-prox", 'b',
"with-motion-events", 'b') {
litest_add_parametrized(tablet_eraser_button_disabled, LITEST_TABLET, LITEST_TOTEM|LITEST_FORCED_PROXOUT, params);
}
/* clang-format on */
}
TEST_COLLECTION(tablet_proximity)
{
/* clang-format off */
litest_add(proximity_out_clear_buttons, LITEST_TABLET, LITEST_FORCED_PROXOUT);
litest_add(proximity_in_out, LITEST_TABLET, LITEST_ANY);
litest_add(proximity_in_button_down, LITEST_TABLET, LITEST_ANY);
litest_add(proximity_out_button_up, LITEST_TABLET, LITEST_ANY);
litest_add(proximity_has_axes, LITEST_TABLET, LITEST_ANY);
litest_add(bad_distance_events, LITEST_TABLET | LITEST_DISTANCE, LITEST_ANY);
litest_add(proximity_range_enter, LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_MOUSE, LITEST_ANY);
litest_add(proximity_range_in_out, LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_MOUSE, LITEST_ANY);
litest_add(proximity_range_button_click, LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_MOUSE, LITEST_ANY);
litest_add(proximity_range_button_press, LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_MOUSE, LITEST_ANY);
litest_add(proximity_range_button_release, LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_MOUSE, LITEST_ANY);
litest_add(proximity_out_slow_event, LITEST_TABLET | LITEST_DISTANCE, LITEST_ANY);
litest_add(proximity_out_not_during_contact, LITEST_TABLET | LITEST_DISTANCE, LITEST_ANY);
litest_add(proximity_out_not_during_buttonpress, LITEST_TABLET | LITEST_DISTANCE, LITEST_ANY);
litest_add(proximity_out_disables_forced, LITEST_TABLET, LITEST_FORCED_PROXOUT|LITEST_TOTEM);
litest_add(proximity_out_disables_forced_after_forced, LITEST_TABLET, LITEST_FORCED_PROXOUT|LITEST_TOTEM);
/* clang-format on */
}
TEST_COLLECTION(tablet_tip)
{
/* clang-format off */
litest_add(tip_down_up, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_down_prox_in, LITEST_TABLET, LITEST_ANY);
litest_add(tip_up_prox_out, LITEST_TABLET, LITEST_ANY);
litest_add(tip_down_btn_change, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_up_btn_change, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_down_motion, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_up_motion, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_down_up_eraser, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_with_parameters(params, "axis", 'I', 2, litest_named_i32(ABS_X), litest_named_i32(ABS_Y)) {
litest_add_parametrized(tip_up_motion_one_axis, LITEST_TABLET|LITEST_HOVER, LITEST_ANY, params);
}
litest_add(tip_state_proximity, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_state_axis, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_state_button, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add_no_device(tip_up_on_delete);
/* clang-format on */
}