qemu/tests
Zhang Chen 9fd3c5d556 tests/test-filter-redirector: Add unit test for filter-redirector
In this unit test,we will test the filter redirector function.

Case 1, tx traffic flow:

qemu side              | test side
                       |
+---------+            |  +-------+
| backend <---------------+ sock0 |
+----+----+            |  +-------+
     |                 |
+----v----+  +-------+ |
|  rd0    +->+chardev| |
+---------+  +---+---+ |
                 |     |
+---------+      |     |
|  rd1    <------+     |
+----+----+            |
     |                 |
+----v----+            |  +-------+
|  rd2    +--------------->sock1  |
+---------+            |  +-------+
                       +

a. we(sock0) inject packet to qemu socket backend
b. backend pass packet to filter redirector0(rd0)
c. rd0 redirect packet to out_dev(chardev) which is connected with
filter redirector1's(rd1) in_dev
d. rd1 read this packet from in_dev, and pass to next filter redirector2(rd2)
e. rd2 redirect packet to rd2's out_dev which is connected with an opened socketed(sock1)
f. we read packet from sock1 and compare to what we inject

Start qemu with:

"-netdev socket,id=qtest-bn0,fd=%d "
"-device rtl8139,netdev=qtest-bn0,id=qtest-e0 "
"-chardev socket,id=redirector0,path=%s,server,nowait "
"-chardev socket,id=redirector1,path=%s,server,nowait "
"-chardev socket,id=redirector2,path=%s,nowait "
"-object filter-redirector,id=qtest-f0,netdev=qtest-bn0,"
"queue=tx,outdev=redirector0 "
"-object filter-redirector,id=qtest-f1,netdev=qtest-bn0,"
"queue=tx,indev=redirector2 "
"-object filter-redirector,id=qtest-f2,netdev=qtest-bn0,"
"queue=tx,outdev=redirector1 "

--------------------------------------
Case 2, rx traffic flow
qemu side              | test side
                       |
+---------+            |  +-------+
| backend +---------------> sock1 |
+----^----+            |  +-------+
     |                 |
+----+----+  +-------+ |
|  rd0    +<-+chardev| |
+---------+  +---+---+ |
                 ^     |
+---------+      |     |
|  rd1    +------+     |
+----^----+            |
     |                 |
+----+----+            |  +-------+
|  rd2    <---------------+sock0  |
+---------+            |  +-------+

a. we(sock0) insert packet to filter redirector2(rd2)
b. rd2 pass packet to filter redirector1(rd1)
c. rd1 redirect packet to out_dev(chardev) which is connected with
   filter redirector0's(rd0) in_dev
d. rd0 read this packet from in_dev, and pass ti to qemu backend which is
   connected with an opened socketed(sock1)
e. we read packet from sock1 and compare to what we inject

Start qemu with:

"-netdev socket,id=qtest-bn0,fd=%d "
"-device rtl8139,netdev=qtest-bn0,id=qtest-e0 "
"-chardev socket,id=redirector0,path=%s,server,nowait "
"-chardev socket,id=redirector1,path=%s,server,nowait "
"-chardev socket,id=redirector2,path=%s,nowait "
"-object filter-redirector,id=qtest-f0,netdev=qtest-bn0,"
"queue=rx,outdev=redirector0 "
"-object filter-redirector,id=qtest-f1,netdev=qtest-bn0,"
"queue=rx,indev=redirector2 "
"-object filter-redirector,id=qtest-f2,netdev=qtest-bn0,"
"queue=rx,outdev=redirector1 "

Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>
Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
2016-03-30 08:57:33 +08:00
..
acpi-test-data acpi-test: update UID for GSI links 2016-03-15 23:25:52 +02:00
guest-debug tests/guest-debug: introduce basic gdbstub tests 2015-12-17 13:37:15 +00:00
image-fuzzer tests: Use Python 2.6 "except E as ..." syntax 2016-02-08 17:29:54 +01:00
libqos * Log filtering from Alex and Peter 2016-03-24 21:42:40 +00:00
multiboot tests/multiboot: Add test for modules 2015-01-26 12:22:44 +01:00
qapi-schema qapi: Allow anonymous base for flat union 2016-03-18 10:29:26 +01:00
qemu-iotests qemu-iotests: add no-op streaming test 2016-03-28 13:56:44 -04:00
rocker rocker: tests: don't need to specify master/self when setting vlans 2015-07-07 13:13:22 +01:00
tcg util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
vmstate-static-checker-data tests: vmstate static checker: add size mismatch inside substructure 2014-06-23 19:14:52 +02:00
.gitignore tests/test-filter-redirector: Add unit test for filter-redirector 2016-03-30 08:57:33 +08:00
ac97-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ahci-test.c ide: Clean up includes 2016-01-29 15:07:23 +00:00
bios-tables-test.c vhost, virtio, pci, pxe 2016-02-19 10:50:37 +00:00
boot-order-test.c fw_cfg: Split fw_cfg_keys.h off fw_cfg.h 2016-03-22 22:20:16 +01:00
boot-sector.c all: Clean up includes 2016-02-23 12:43:05 +00:00
boot-sector.h tests: add pxe e1000 and virtio-pci tests 2016-02-16 12:05:18 +02:00
check-block.sh qemu-iotests: make check-block.sh work on out-of-tree builds 2016-01-07 21:30:16 +01:00
check-qdict.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qfloat.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qint.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qjson.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qlist.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qom-interface.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qom-proplist.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
check-qstring.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
crypto-tls-x509-helpers.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
crypto-tls-x509-helpers.h crypto: add sanity checking of TLS x509 credentials 2015-09-15 15:05:09 +01:00
device-introspect-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
display-vga-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
drive_del-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ds1338-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
e1000-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
eepro100-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
endianness-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
es1370-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
fdc-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
fw_cfg-test.c fw_cfg: Split fw_cfg_keys.h off fw_cfg.h 2016-03-22 22:20:16 +01:00
hd-geo-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
i440fx-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
i82801b11-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ide-test.c ide: Clean up includes 2016-01-29 15:07:23 +00:00
intel-hda-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
io-channel-helpers.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
io-channel-helpers.h io: add QIOChannelSocket class 2015-12-18 12:18:31 +00:00
ioh3420-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ipmi-bt-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ipmi-kcs-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ipoctal232-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ivshmem-test.c ivshmem: Split ivshmem-plain, ivshmem-doorbell off ivshmem 2016-03-21 21:29:03 +01:00
libqtest.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
libqtest.h all: Clean up includes 2016-02-23 12:43:05 +00:00
m48t59-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
Makefile tests/test-filter-redirector: Add unit test for filter-redirector 2016-03-30 08:57:33 +08:00
ne2000-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
nvme-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
pc-cpu-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
pcnet-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
pkix_asn1_tab.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
pvpanic-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
pxe-test.c all: Clean up includes 2016-02-23 12:43:05 +00:00
q35-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
qemu-iotests-quick.sh qemu-iotests: Speed up make check-block 2015-01-13 11:47:55 +00:00
qom-test.c util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
rcutorture.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
rtc-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
rtl8139-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
spapr-phb-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
tco-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-aio.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-base64.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-bitops.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-blockjob-txn.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-coroutine.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-crypto-afsplit.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-crypto-block.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-crypto-cipher.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-crypto-hash.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-crypto-ivgen.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-crypto-pbkdf.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-crypto-secret.c include/crypto: Include qapi-types.h or qemu/bswap.h instead of qemu-common.h 2016-03-22 22:20:16 +01:00
test-crypto-tlscredsx509.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-crypto-tlssession.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-crypto-xts.c crypto: import an implementation of the XTS cipher mode 2016-03-17 14:41:15 +00:00
test-cutils.c util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
test-filter-mirror.c tests/test-filter-mirror:add filter-mirror unit test 2016-03-30 08:57:16 +08:00
test-filter-redirector.c tests/test-filter-redirector: Add unit test for filter-redirector 2016-03-30 08:57:33 +08:00
test-hbitmap.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-int128.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-io-channel-buffer.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-io-channel-command.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-io-channel-file.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-io-channel-socket.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-io-channel-tls.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-io-task.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-iov.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-logging.c qemu-log: support simple pid substitution for logs 2016-03-22 22:20:18 +01:00
test-mul64.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-netfilter.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-opts-visitor.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-qdev-global-props.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-qemu-opts.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-qga.c qga: Support enum names in guest-file-seek 2016-02-25 09:48:50 -06:00
test-qmp-commands.c qapi: Don't special-case simple union wrappers 2016-03-18 10:29:26 +01:00
test-qmp-event.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-qmp-input-strict.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-qmp-input-visitor.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-qmp-output-visitor.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-rcu-list.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-rfifolock.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-string-input-visitor.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-string-output-visitor.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-thread-pool.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-throttle.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-timed-average.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-visitor-serialization.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-vmstate.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-write-threshold.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-x86-cpuid.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-xbzrle.c util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
tmp105-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
tpci200-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
usb-hcd-ehci-test.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
usb-hcd-ohci-test.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
usb-hcd-uhci-test.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
usb-hcd-xhci-test.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
vhost-user-bridge.c tests/vhost-user-bridge: fix build on 32 bit systems 2016-02-25 13:14:19 +02:00
vhost-user-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-9p-test.c 9pfs: Clean up includes 2016-01-29 15:07:23 +00:00
virtio-balloon-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-blk-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-console-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-net-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-rng-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-scsi-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-serial-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
vmxnet3-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
wdt_ib700-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00