-
Notifications
You must be signed in to change notification settings - Fork 1
/
NEWS
458 lines (404 loc) · 19.4 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
0.11.1 (2018-02-28)
-------------------
- Fix architecture specific /proc test (#74)
- Move release tarballs to https://github.com/martinpitt/umockdev/releases
0.11 (2018-02-09)
-----------------
- Wrap openat{,64}() to work with libudev 237
0.10 (2018-01-07)
-----------------
- Create /sys/bus symlinks for Thunderbolt devices
- Avoid buffer overflow in uevent_sender_send()
0.9.4 (2017-10-14)
------------------
- preload: Wrap [l]getxattr(). Fixes e. g. confusing error messages in `ls -l`.
- Refine detection of being in mock environment. Fixes message about
nonexisting devices in `uevent_sender_send()` when using umockdev-run.
- Fix build warnings about non-applicable "static const"s.
- Disable t_gphoto_* test cases for now. These currently trigger an
assertion about submit_node != NULL. The URB structure in libgphoto/libmtp
apparently got more flexible, so ioctl replaying needs to be fixed for that.
0.9.3 (2017-09-06)
------------------
- In the /umockdev-record/system-single test, stop assuming that /dev/loop0
always exists, as that is not the case in containers and some other build
machines. Use /dev/zero as second device instead. (Debian #792189)
0.9.2 (2017-08-10)
------------------
- Relax sysfs path check in /umockdev-testbed/dev_query_gudev test to also work
with udev 234. (Debian #871060)
0.9.1 (2017-05-01)
------------------
- Relax /umockdev-testbed/proc to work on different architectures, and show
/proc/cpuinfo on failure for easier debugging.
0.9 (2017-04-13)
----------------
- Add mocking of /proc. (issue #55)
0.8.13 (2017-01-26)
-------------------
- Fix crash when client sends uevents to closed listeners. (issue #53)
0.8.12 (2016-11-10)
-------------------
- Include missing sys/sysmacros.h to fix build with recent glibc.
- Fix /umockdev-testbed-usb/lsusb test for libusb 1.0.21.
0.8.11 (2015-06-29)
-------------------
- test-umockdev.py: 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
X.org 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
functions.
- 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. (https://launchpad.net/bugs/1336671)
- 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 X.org 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
device.
- 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
contributing.
- Add code coverage reporting with gcov and lcov, using the gnome-common
macros. autogen.sh will enable this automatically if lcov is installed.
- Support comments in scripts and ioctl records, lines starting with '#' get
ignored.
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)
- Support USBDEVFS_GET_CAPABILITIES ioctl.
- preload: Repair recording if device gets opened multiple times (got broken in
0.3)
- 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 autogen.sh.
- 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
instances).
0.2.8 (2013-06-17)
------------------
- Link the typelib to the SONAMEd library, not the version-less development
symlink.
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 X.org log into a file, point to it on X.org startup
failure, and also point out that this needs X.org'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 https://launchpad.net/bugs/1190225).
(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
/dev/bus/usb.
- 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
time.
- 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
future.
- Store return values of ioctls in records, as they are not always 0
(like EVIOCGBIT)
- Add support for ioctl ranges (like EVIOCGABS) and ioctls with variable length
(like EVIOCGBIT).
- 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.