spice/server/tests
Frediano Ziglio 19d2e2e8b5 stream-device: Implement properly device reset on open/close
Due to the way Qemu handle the device, when an error occurs we must consume
all pending data inside the callback which reads data from the device.
If we don't flush this data, the next time spice-server tries to read from
the device (after the guest closes/reopens it), we'll be getting stale
data. This can happen because we cannot prevent the guest from writing to
the device even after it got in an error state.
This needs to be done within this callback, as QEMU returns 0 if you call
SpiceCharDeviceInterface::read() outside of it. QEMU invokes this callback
through a call to spice_server_char_device_wakeup.
On the test now we must test that we receive an error from the device.
Previously we checked that last part of the data was not read. Now
potentially all data are read, so we need another way to check the device
detected the error.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2018-03-06 11:21:39 +00:00
..
pki tests/pki: Use CA/certificate valid until 2048 2017-03-23 12:02:47 +01:00
valgrind build-sys: Add make check-valgrind target 2017-03-21 16:34:56 +01:00
.gitignore tests: Remove test-just-sockets-no-ssl 2018-01-16 16:32:21 +00:00
base_test.ppm Adding image to be used as "correct" in regression tests 2012-02-14 14:53:47 +02:00
basic-event-loop.c basic-event-loop: Document why code does not use default GLib context 2018-01-16 12:40:35 +00:00
basic-event-loop.h tests: Allow to quit the message loop 2017-09-07 08:54:18 +01:00
Makefile.am tests: Remove test-just-sockets-no-ssl 2018-01-16 16:32:21 +00:00
README tests: Update README 2017-09-07 08:54:18 +01:00
regression-test.py tests: Normalize test names 2016-11-25 13:52:39 +00:00
replay.c replay: Do not use obsolete set_mm_time callback 2018-01-31 13:31:40 +00:00
stat-test.c Use verify instead of G_STATIC_ASSERT 2017-12-01 22:49:46 +00:00
test-agent-msg-filter.c Test agent message filter processing 2016-10-11 13:49:15 +01:00
test-channel.c test-channel: Use correct endianness for ack message 2018-01-09 16:50:32 +00:00
test-codecs-parsing.c tests: Reuse GLib compatibility code 2017-03-03 16:49:43 +00:00
test-display-base.c Avoid some alignment warnings using clang 2018-01-31 13:35:46 +00:00
test-display-base.h tests: Automatically determine free port to use 2017-09-21 17:32:23 +02:00
test-display-no-ssl.c tests: destroy test object 2017-09-02 08:07:38 +01:00
test-display-resolution-changes.c clang: remove double promotion 2018-01-08 10:20:30 +00:00
test-display-streaming.c Avoid some alignment warnings using clang 2018-01-31 13:35:46 +00:00
test-display-width-stride.c tests: Use GLib memory functions 2017-12-01 22:31:52 +00:00
test-empty-success.c tests: Make test-empty-success automated 2017-09-07 08:54:18 +01:00
test-fail-on-null-core-interface.c tests: Make test-fail-on-null-core-interface an automated test 2017-09-07 08:54:18 +01:00
test-glib-compat.c Fix minor incompatibilities with RHEL6 2017-03-30 10:50:09 +01:00
test-glib-compat.h tests: Avoid to disable all deprecation warnings just for expect functions 2017-09-12 14:17:53 +01:00
test-gst.c Avoid some alignment warnings using clang 2018-01-31 13:35:46 +00:00
test-leaks.c inputs-channels: Remove leak using tablet device 2017-11-22 16:44:09 +00:00
test-loop.c tests: Normalize test names 2016-11-25 13:52:39 +00:00
test-multiple.py tests: Normalize test names 2016-11-25 13:52:39 +00:00
test-options.c tests: Move some specific GLib compatibility to compatibility file 2017-03-03 16:49:41 +00:00
test-playback.c tests: Make variables static where possible 2017-09-02 08:02:36 +01:00
test-qxl-parsing.c tests: Use GLib memory functions 2017-12-01 22:31:52 +00:00
test-sasl.c tests: Avoid some possible not initialized warning from Clang 2018-01-31 13:31:40 +00:00
test-stat-file.c tests: Use GLib memory functions 2017-12-01 22:31:52 +00:00
test-stat.c tests: Rename stat-main.c to test-stat.c 2017-09-18 13:50:26 +01:00
test-stream-device.c stream-device: Implement properly device reset on open/close 2018-03-06 11:21:39 +00:00
test-stream.c test-stream: initialize msg.msg_flags 2017-12-11 10:16:11 +00:00
test-two-servers.c tests: Automatically determine free port to use 2017-09-21 17:32:23 +02:00
test-vdagent.c test-vdagent: Remove useless MIN definition 2017-12-05 10:54:09 +00:00
video-encoders test: Add vp9 support to GStreamer test 2017-04-07 16:45:54 +01:00

What is here
============

This directory will contain a testsuite for the server.

You can run all the tests and use libtool to debug any of them:

libtool --mode=execute gdb test-just-sockets-no-ssl

Overview of tests
=================

test-just-sockets-no-ssl
 A complete server, only provides the main and inputs channels. Doesn't actually produce anything on the channels. Essentially a test of the regular link code (reds.c), good for multiple connect/disconnect tests.

test-empty-success
 tests calling

test-fail-on-null-core-interface
 should abort when run (when spice tries to watch_add)

basic-event-loop.c
 event loop to provide core interface.

Automated tests
===============

test-display-streaming.c
 this test can be used to check regressions. For this, test-display-streaming needs to be called passing --automated-tests as parameter