Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions tests/test-umockdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,44 @@ t_testbed_add_device(UMockdevTestbedFixture * fixture, gconstpointer data)
g_free(syspath);
}

static void
t_testbed_add_devicev_fstat(UMockdevTestbedFixture * fixture, gconstpointer data)
{
gboolean success;
GError *error = NULL;
gchar const* devnode;
int fd;
struct stat stat_from_fstat;
struct stat stat_from_stat;
struct udev *udev;
struct udev_monitor *udev_mon;
struct udev_device *device;

/* Set up Udev monitor to check for added event */
udev = udev_new();
g_assert(udev != NULL);
udev_mon = udev_monitor_new_from_netlink(udev, "udev");
g_assert(udev_mon != NULL);
g_assert_cmpint(udev_monitor_get_fd(udev_mon), >, 0);
g_assert_cmpint(udev_monitor_enable_receiving(udev_mon), ==, 0);

success = umockdev_testbed_add_from_file(fixture->testbed, "tests/w740su-touchpad.umockdev", &error);
g_assert_no_error(error);
g_clear_error(&error);
g_assert(success);

g_assert((device = udev_monitor_receive_device(udev_mon))!=NULL);
g_assert((devnode = udev_device_get_devnode(device))!=NULL);
g_assert_cmpint(fd = g_open(devnode, O_RDWR | O_NONBLOCK), >, 0);
g_assert_cmpint(fstat(fd, &stat_from_fstat), ==, 0);
g_assert_cmpint(stat(devnode, &stat_from_stat), ==, 0);
g_assert_cmpint(stat_from_stat.st_rdev, ==, stat_from_fstat.st_rdev);

udev_device_unref(device);
udev_monitor_unref(udev_mon);
udev_unref(udev);
}

/* UMockdevTestbed add_device() with adding a child device */
static void
t_testbed_child_device(UMockdevTestbedFixture * fixture, gconstpointer data)
Expand Down Expand Up @@ -1938,6 +1976,8 @@ main(int argc, char **argv)
t_testbed_add_devicev, t_testbed_fixture_teardown);
g_test_add("/umockdev-testbed/add_device", UMockdevTestbedFixture, NULL, t_testbed_fixture_setup,
t_testbed_add_device, t_testbed_fixture_teardown);
g_test_add("/umockdev-testbed/add_devicev_fstat", UMockdevTestbedFixture, NULL, t_testbed_fixture_setup,
t_testbed_add_devicev_fstat, t_testbed_fixture_teardown);
g_test_add("/umockdev-testbed/add_block_device", UMockdevTestbedFixture, NULL, t_testbed_fixture_setup,
t_testbed_add_block_device, t_testbed_fixture_teardown);
g_test_add("/umockdev-testbed/add_device_errors", UMockdevTestbedFixture, NULL, t_testbed_fixture_setup,
Expand Down
128 changes: 128 additions & 0 deletions tests/w740su-touchpad.umockdev
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
P: /devices/platform/i8042/serio2/input/input10/event6
N: input/event6
S: input/by-path/platform-i8042-serio-2-event-mouse
E: DEVLINKS=/dev/input/by-path/platform-i8042-serio-2-event-mouse
E: DEVNAME=/dev/input/event6
E: ID_INPUT=1
E: ID_INPUT_HEIGHT_MM=58
E: ID_INPUT_TOUCHPAD=1
E: ID_INPUT_WIDTH_MM=96
E: ID_PATH=platform-i8042-serio-2
E: ID_PATH_TAG=platform-i8042-serio-2
E: ID_SERIAL=noserial
E: MAJOR=13
E: MINOR=70
E: SUBSYSTEM=input
A: dev=13:70
L: device=../../input10
A: power/async=disabled
A: power/control=auto
A: power/runtime_active_kids=0
A: power/runtime_active_time=0
A: power/runtime_enabled=disabled
A: power/runtime_status=unsupported
A: power/runtime_suspended_time=0
A: power/runtime_usage=0

P: /devices/platform/i8042/serio2/input/input10
E: ABS=660800011000003
E: EV=b
E: ID_FOR_SEAT=input-platform-i8042-serio-2
E: ID_INPUT=1
E: ID_INPUT_TOUCHPAD=1
E: ID_PATH=platform-i8042-serio-2
E: ID_PATH_TAG=platform-i8042-serio-2
E: ID_SERIAL=noserial
E: KEY=e520 10000 0 0 0 0
E: MODALIAS=input:b0011v0002p0007e01B1-e0,1,3,k110,145,148,14A,14D,14E,14F,ra0,1,18,1C,2F,35,36,39,3A,mlsfw
E: NAME="SynPS/2 Synaptics TouchPad"
E: PHYS="isa0060/serio2/input0"
E: PRODUCT=11/2/7/1b1
E: PROP=5
E: SUBSYSTEM=input
E: TAGS=:seat:
A: capabilities/abs=660800011000003
A: capabilities/ev=b
A: capabilities/ff=0
A: capabilities/key=e520 10000 0 0 0 0
A: capabilities/led=0
A: capabilities/msc=0
A: capabilities/rel=0
A: capabilities/snd=0
A: capabilities/sw=0
L: device=../../../serio2
A: id/bustype=0011
A: id/product=0007
A: id/vendor=0002
A: id/version=01b1
A: modalias=input:b0011v0002p0007e01B1-e0,1,3,k110,145,148,14A,14D,14E,14F,ra0,1,18,1C,2F,35,36,39,3A,mlsfw
A: name=SynPS/2 Synaptics TouchPad
A: phys=isa0060/serio2/input0
A: power/async=disabled
A: power/control=auto
A: power/runtime_active_kids=0
A: power/runtime_active_time=0
A: power/runtime_enabled=disabled
A: power/runtime_status=unsupported
A: power/runtime_suspended_time=0
A: power/runtime_usage=0
A: properties=5
A: uniq=

P: /devices/platform/i8042/serio2
E: DRIVER=psmouse
E: MODALIAS=serio:ty01pr00id00ex00
E: SERIO_EXTRA=00
E: SERIO_FIRMWARE_ID=PNP: SYN1213 PNP0f13
E: SERIO_ID=00
E: SERIO_PROTO=00
E: SERIO_TYPE=01
E: SUBSYSTEM=serio
A: bind_mode=auto
A: description=i8042 AUX1 port
L: driver=../../../../bus/serio/drivers/psmouse
A: firmware_id=PNP: SYN1213 PNP0f13
A: id/extra=00
A: id/id=00
A: id/proto=00
A: id/type=01
A: modalias=serio:ty01pr00id00ex00
A: power/async=disabled
A: power/control=auto
A: power/runtime_active_kids=0
A: power/runtime_active_time=0
A: power/runtime_enabled=disabled
A: power/runtime_status=unsupported
A: power/runtime_suspended_time=0
A: power/runtime_usage=0
A: power/wakeup=disabled
A: power/wakeup_abort_count=
A: power/wakeup_active=
A: power/wakeup_active_count=
A: power/wakeup_count=
A: power/wakeup_expire_count=
A: power/wakeup_last_time_ms=
A: power/wakeup_max_time_ms=
A: power/wakeup_total_time_ms=
A: protocol=SynPS/2
A: rate=80
A: resetafter=5
A: resolution=200
A: resync_time=0

P: /devices/platform/i8042
E: DRIVER=i8042
E: MODALIAS=platform:i8042
E: SUBSYSTEM=platform
L: driver=../../../bus/platform/drivers/i8042
A: driver_override=(null)
A: modalias=platform:i8042
A: power/async=disabled
A: power/control=auto
A: power/runtime_active_kids=0
A: power/runtime_active_time=0
A: power/runtime_enabled=disabled
A: power/runtime_status=unsupported
A: power/runtime_suspended_time=0
A: power/runtime_usage=0