Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

406 lines (361 sloc) 17.6 KB
0.8.11 (2015-06-29)
- Explicitly require version 1.0 for GUdev and GUMockdev
introspection modules to avoid deprecation warning.
- Skip /umockdev-record/system-all test with "check-installed", it's too
brittle and prone to break on quirky hardware/kernel issues.
0.8.10 (2015-06-09)
- Fix build failure of tests/test-ioctl-tree.c on powerpc with recent glibcs.
- preload: Wrap readlinkat() and canonicalize_file_name(), to work with
udev >= 220.
- Create /sys/bus/ hierarchy instead of /sys/class for "usb" and "pci"
subsystems, to match what the real kernel does.
- Include DEVTYPE and SEQNUM properties into synthesized uevents so that
libudev >= 220 monitoring works.
0.8.9 (2015-05-22)
- umockdev-record: Ignore stderr from udevadm info, to avoid udev debug
message spew on stderr if udev debugging is enabled. (Debian #767909)
- Fix recording of USB devices on recent kernels: Pass device as major:minor
instead of assuming that they are only 8 bit (which is not true any more).
- Skip /umockdev-run/integration/input-touchpad test instead of failing when does not start up. Calling Xorg is not allowed in build environments in
e. g. Fedora. (issue #47)
0.8.8 (2014-09-22)
- Skip O_TMPFILE test on Linux versions which don't support that.
0.8.7 (2014-09-19)
- /umockdev-run/integration/input-evtest-evemu test: Be more liberal in parsing
evtest's SYN event output, as it changed in 1.32.
- preload: Properly wrap open() with O_TMPFILE. Thanks Cemil Azizoglu.
0.8.6 (2014-09-01)
- Fix compilation on sparc with gcc 4.9.
- Support attributes with leading directory names, such as "queue/rotational".
(issue #41)
- Create /sys/block symlink for block devices (other part of issue #41).
0.8.5 (2014-07-11)
- Fix building with gcc 4.9 on 32 bit architectures.
- Restrict input-touchpad test case to 64 bit architectures, as we don't
currently have recorded ioctls for 32 bit.
- Lower number of iterations in mt_uevent test case to avoid overflowing the
netlink buffer on loaded machines.
0.8.4 (2014-07-10)
- Make SKIP messages go to to stdout, like all the other the test suite output.
- Fix test case failures when running tests without a controlling tty.
0.8.3 (2014-07-10)
- Add umockdev_testbed_get_property() method. This is mostly for internal
umockdev testing, umockdev users should use libudev/gudev get_property
- preload: Make path redirection to testbed thread-safe for wrapped functions.
This does NOT address all multi-thread issues, but should work for simple
cases. (
- Make debug logging dynamically controllable with the $UMOCKDEV_DEBUG
environment variable. See README.rst for details.
- Emulate isatty(). It would previously return true for emulated devices as
PTYs are being used internally, but the actual emulated device is not always
supposed to be a TTY. Fixes regression with synaptics >= 1.8 device
emulation as that uses xf86OpenSerial() to open evdev devices (which is
wrong, but reality).
- Don't fall back to real ioctls on emulated fds.
0.8.2 (2014-05-15)
- Fix ioctl recording of multiple device open/close cycles. This regressed in
0.6 to only keep the data of the last cycle.
- Update devices/cameras/canon-powershot-sx200.ioctl with ioctls from
libgphoto2 2.5.4, to make the /umockdev-run/integration/gphoto-* tests work
with that version.
- On ioctl recording, also record the device name on close().
0.8.1 (2014-03-31)
- Fix eternal hang due to negative delays when playing back evemu scripts with
timestamps that go backwards.
0.8 (2014-03-20)
New features:
- Add new method umockdev_testbed_load_evemu_events() to replay an evemu events
file into an emulated evdev device. These are platform independent and thus
more portable than a script record.
- Add -e/--evemu-events=devname=eventsfilename option to umockdev-run, to load
an evemu .events file. (Issue #5)
- Add -e/--evemu-events=devname=eventsfilename option to umockdev-record, to
record reads from an evdev device into an evemu .events file. (Issue #5)
- Add umockdev_in_mock_environment(). This function returns whether
or not the current process is running in a umockdev testbed
environment. Thanks Chris Halse Rogers!
Bug fixes:
- Only send a "add" uevent from add_device if running in a umockdev
testbed environment. Fixes error messages when loading devices from
the umockdev-run commandline. Thanks Chris Halse Rogers!
- Fix detection of mismatching devices when recording into an already existing
ioctl or script record file.
0.7 (2014-03-05)
- Set PTYs into raw mode to get more accurate read() semantics,
specifically how many bytes each read() slurps.
- umockdev-record --script=/dev/device now also stores the name of the
device node recorded in the script.
umockdev_testbed_load_script(testbed, NULL, "device.script")
now automatically associates the script with the original device node.
0.6 (2014-02-15)
- Also send DEVNAME in uevent when available. Thanks Chris Halse Rogers!
- Send an "add" uevent when adding a device
- umockdev-record --ioctl now stores the name of the device node recorded
in the trace. umockdev_testbed_load_ioctl(testbed, NULL, "device.ioctl")
now automatically associates the ioctl trace with the original device
node. (issue #33)
0.5.1 (2014-01-16)
- Update devices/cameras/canon-powershot-sx200.ioctl with ioctls from
libgphoto2 2.5.3, to make the /umockdev-run/integration/gphoto-* tests work
with that version.
0.5 (2014-01-08)
- Add generic support for variable length structs without pointers to
substructs. Definitions of such ioctls must provide a get_data_size()
function which returns the number of bytes based on the ioctl number and the
data pointer.
- Declare libc ioctl type correctly using varargs. On some architectures (e.g.
ppc64el) the calling convention for varargs is sufficiently different that
the previous declaration caused stack corruption. Thanks Colin Watson!
0.4.7 (2013-11-14)
- Skip umockdev-record loop device test if /sys exists, but there is no loop
- Slightly relax timings in /umockdev-testbed/script_replay_simple test to
avoid failure on slow machines.
- preload: Wrap chmod() and inotify_add_watch().
- Fix assertion on umockdev_testbed_uevent() if there are no listeners.
(issue #29)
0.4.6 (2013-10-11)
- Fix wrong select() call timeout which caused a failure on arm64.
- Skip umockdev-record tests which need /sys if there is no real /sys.
(Debian #724203)
0.4.5 (2013-09-17)
- Make various test cases more robust.
0.4.4 (2013-09-16)
- testsuite: Write "skip" messages to stdout instead of stderr.
- README.rst: Add information about building, testing, running, and
- Add code coverage reporting with gcov and lcov, using the gnome-common
macros. will enable this automatically if lcov is installed.
- Support comments in scripts and ioctl records, lines starting with '#' get
0.4.3 (2013-08-23)
- preload: Don't call overridden readlink() in helper function. Fixes building
with gcc 4.6 and older. (issue #27)
- preload: Repair recording if device gets opened multiple times (got broken in
- ioctl recording: Never consider input URBs equal even if they have exactly
the same data, as that might give a mismatch between identical SUBMITs and
different REAPs.
0.4.2 (2013-08-01)
- preload: Don't intercept netlink socket() calls during recording.
- Update devices/cameras/canon-powershot-sx200.ioctl for libgphoto 2.5.
0.4.1 (2013-07-29)
Bug fixes:
- preload: Wrap __open_2() and __open64_2().
0.4 (2013-07-29)
New features:
- Add recording of Unix stream sockets. (part of issue #24)
- Add new method umockdev_testbed_load_socket_script() to replay recorded
read()s/recv()s and write()s/send()s to a Unix socket. (part of issue #24)
- Add new umockdev-run option -u/--unix-stream to load a script for a mocked
Unix socket into the testbed. (part of issue #24)
- Add new script file operation "f" to set a fuzz level when comparing expected
incoming strings. (issue #26)
- Add docs/script-format.txt: document the umockdev script format.
- README.rst: Add unix socket record/replay example.
Bug fixes:
- Quote send/received data in script replay debug output, to get along with
embedded null bytes and control characters. (issue #25)
0.3.2 (2013-07-18)
- script replay: Fix endless loop on end of script file.
- Fix /umockdev-run/integration/input-evtest for 32 bit architectures. Add a
script recorded on 32 bit and select the right one in the test.
- Fix race condition in /umockdev-record/script-log-simple test which sometimes
caused this to fail on slow machines.
0.3.1 (2013-07-18)
- Fix /umockdev-run/integration/input-touchpad test case to not leave behind an
Xorg process on failure.
- Skip /umockdev-run/integration/input-touchpad test case on big-endian
machines, as we do not have ioctl data from big endian machines at the moment.
- Flush the output file after each script recording event, to avoid losing data
when recording programs that get terminated with a signal.
- Intercept SIGINT during ioctl recording, so that the record gets written even
if the recorded program gets terminated with Control-C.
- Fix /umockdev-testbed-usb/lsusb test case to work with libusbx 1.0.16.
- Create PTY devices (for usage with get_dev_fd()) instead of plain files for
other device types than tty as well, except for SUBSYSTEM=="usb". With that
you can use record&replay for e. g. input or DRI control devices.
(main part of issue #5)
- Reading scripts during device playback does not wrap around at EOF any more.
This more closely reproduces how real devices behave. If we actually get an
use case for wrapping around, we can do this by adding a new operation type
to script files.
0.3 (2013-07-12)
Command line argument changes (not backwards compatible):
- Change umockdev-record's --ioctl option: The argument is now
"devicefile=outputfile" like with umockdev-run, instead of specifying the
device as the first positional argument. This was inconsistant, and is
necessary to support other kinds of recording in the future.
- Rename umockdev-run's -l/--load option to -d/--device. Other kinds of files
(ioctl dumps, and read/write scripts) also get "loaded" into the testbed, so
the previous name does not make sense any more.
New features/API:
- Emulate SUBSYSTEM=tty mocked device nodes as PTYs instead of plain files, so
that they behave tty-like and respond to the relevant ioctls.
(first part of issue #9)
- Add new method umockdev_testbed_get_dev_fd() to get the master end file
descriptor for simulated tty devices (and possibly other kinds of devices in
the future), so that a test suite can communicate with clients that connect
to the simulated tty device node. (second part of issue #9)
- Add recording of read()s and write()s to a device into files, called
"device scripts". Add umockdev-record option -s/--script for this.
- Add new method umockdev_testbed_load_script() to replay read()s and
write()s of a device from a script. (issue #18)
- Add new option -s/--script to umockdev-run to load a script into the testbed.
(issue #18)
- Add new method umockdev_testbed_set_attribute_link() to set attributes which
are symlinks; most importantly this allows testbeds to set the "driver"
attribute. (first part of issue #22)
- Record the "driver" attribute in umockdev-record, and restore it in
umockdev_testbed_add_from_string(). (second part of issue #22)
- Add new method umockdev_testbed_remove_device() to remove a sysfs device and
all its associated links, device node, etc. (issue #17)
Bug fixes:
- umockdev-run: Give proper error message if --ioctl argument is invalid.
- preload: Only look up original libc functions once. (issue #21)
- preload: Wrap fclose(). (issue #20)
- Work around gtk-doc non-POSIX recursive variable expansion with automake >=
1.13 and gtk-doc >= 1.19, which previously failed
- Do not export internal symbols in libumockdev library.
0.2.11 (2013-07-03)
- Do not overwrite an existing $LD_PRELOAD in umockdev-run and umockdev-record.
- Add "make check-valgrind" target to debug memory leaks.
- Add recently added API to reference documentation.
- Fix various memory leaks.
0.2.10 (2013-07-01)
- Make stat()ing of emulated /dev/ nodes appear as actual block/char device
nodes with proper major/minor number, instead of regular files. (issue #16)
- Add umockdev_testbed_add_from_file() convenience wrapper around
add_from_string(). (issue #15)
- Handle USBDEVFS_REAPURB ioctls without a previous SUBMITURB like the real USB
stack (return EAGAIN instead of crashing with an assertion). This makes
umockdev work with gvfs' mtp backend.
0.2.9 (2013-06-20)
- preload: Do not change errno when calculating wrapped paths.
- Add umockdev_testbed_disable() and umockdev_testbed_enable() methods for
temporarily disabling the emulated /sys and /dev. This can be used for
temporarily switching back to the real /sys and /dev without having to
destroy or change $UMOCKDEV_DIR and the UMockdevTestbed instance (which is
difficult when these get exported to subprocesses like local D-BUS
0.2.8 (2013-06-17)
- Link the typelib to the SONAMEd library, not the version-less development
0.2.7 (2013-06-17)
- Slightly relax errno test in /umockdev-testbed-vala/usbfs_ioctl_static, the
real call might fail not just with ENOTTY but also with EINVAL.
- Fix tests to work on big-endian machines (tested on powerpc32).
0.2.6 (2013-06-13)
- Do not use automake 1.13's parallel test runner. It not buy much for this
project, and makes it a lot harder to analyse test failures from build logs.
- Add umockdev_testbed_clear() method to remove all added devices (both sysfs
and /dev). This is useful for cleaning up between tests in situations where
the UMockdevTestbed object itself needs to be kept.
- test-umockdev-run: Write log into a file, point to it on startup
failure, and also point out that this needs's dummy driver installed.
(issue #12)
- Fix ioctl file reading on platforms which have unsigned "char" by default,
such as ARM. (issue #11)
- Do not read sysfs attributes of any Tegra device (on ARM systems), as these
often trigger kernel crashes (see
(issue #11)
- Allow uncommon characters in sysfs attribute names.
- devices/input/synaptics-touchpad.ioctl: Add ioctl for 32 bit systems.
(issue #13)
0.2.5 (2013-06-10)
- Fix test-umockdev lsusb check to work in environments without any
- preload: Do not destroy errno on wrapping open() under umockdev-record.
- Add --version option to umockdev-run and umockdev-record.
- Fix building with Vala 0.20.
0.2.4 (2013-06-05)
- Fix "make check" for current automake 1.13.
- Add "make check-installed" target to run tests against the installed umockdev
instead of against the build tree.
0.2.3 (2013-05-25)
- preload: Wrap fopen64() call; fixes operation on 32 bit architectures.
(issue #10)
0.2.2 (2013-05-24)
- umockdev-run: Fix segfault if no program is specified. (issue #6)
- preload: Print proper error message instead of assertion when trying to load
an empty or invalid ioctl record. (issue #8)
- umockdev-run: Fix --help output to not mention the child program twice.
- Fix DEVNAME property with older libudev versions.
- Handle "L:" (link priority) lines from udevadm for newer udev versions.
- Fix segfault with gcc 4.8 (due to changed behaviour of sizeof).
- Drop our posix_extra backport of execvp(), this was added to Vala 0.16.1.
Bump vala dependency accordingly.
0.2.1 (2013-02-21)
- umockdev-wrapper: Use exec to avoid keeping the shell process around and make
killing the subprogram from outside work properly.
- Fix building with automake 1.12, thanks Peter Hutterer.
- Support opening several netlink sockets (i. e. udev monitors) at the same
- Fix building with older kernels which don't have the EVIOCGMTSLOTS ioctl yet.
0.2 (2013-02-20)
Compatibility break: This does not work any more with recorded ioctl files from
version 0.1.
- umockdev-run: Fix running of child program to keep stdin.
- preload: Fix resolution of "/dev" and "/sys"
- ioctl_tree: Fix endless loop when the first encountered ioctl was unknown
- preload: Support opening a /dev node multiple times for ioctl emulation
(issue #3)
- Fix parallel build (issue #2)
- Support xz compressed ioctl files in umockdev_testbed_load_ioctl().
- Add example umockdev and ioctl files for a gphoto camera and an MTP capable
mobile phone.
- Fix building with automake 1.11.3 and Vala 0.16.
- Generalize ioctl recording and emulation for ioctls with simple structs, i.
e. no pointer fields. This makes it much easier to add more ioctls in the
- Store return values of ioctls in records, as they are not always 0
- Add support for ioctl ranges (like EVIOCGABS) and ioctls with variable length
- Add all reading evdev ioctls, for recording and mocking input devices like
touch pads, touch screens, or keyboards. (issue #1)
0.1 (2013-02-12)
Initial release.
Jump to Line
Something went wrong with that request. Please try again.