libvirt/tests
Eric Blake e9568360a6 event: don't turn offline domain into global event
If a user registers for a domain event filtered to a particular
domain, but the persistent domain is offline at the time, then
the code silently failed to set up the filter.  As a result,
the event fires for all domains, rather than being filtered.
Network events were immune, since they always passed an id
0 argument.

The key to this patch is realizing that
virObjectEventDispatchMatchCallback() only cared about uuid;
so refusing to create a meta for a negative id is pointless,
and in fact, malloc'ing meta at all was overkill; instead,
just directly store a uuid and a flag of whether to filter.

Note that virObjectEventPtr still needs all fields of meta,
because this is how we reconstruct a virDomainPtr inside the
dispatch handler before calling the end user's callback
pointer with the correct object, even though only the uuid
portion of meta is used in deciding whether a callback
matches the given event.  So while uuid is optional for
callbacks, it is mandatory for events.

The change to testDomainCreateXMLMixed is merely on the setup
scenario (as you can't register for a domain unless it is either
running or persistent).  I actually first wrote that test for
this patch, then rebased it to also cover a prior patch (commit
4221d64), but had to adjust it for that patch to use Create
instead of Define for setting up the domain long enough to
register the event in order to work around this bug.  But while
the setup is changed, the main body of the test is still about
whether creation events fire as expected.

* src/conf/object_event_private.h (_virObjectEventCallback):
Replace meta with uuid and flag.
(virObjectEventCallbackListAddID): Update signature.
* src/conf/object_event.h (virObjectEventStateRegisterID):
Likewise.
* src/conf/object_event_private.h (virObjectEventNew): Document
use of name and uuid in events.
* src/conf/object_event.c (virObjectEventCallbackListAddID): Drop
arguments that don't affect filtering.
(virObjectEventCallbackListRemoveID)
(virObjectEventDispatchMatchCallback)
(virObjectEventStateRegisterID): Update clients.
* src/conf/domain_event.c (virDomainEventCallbackListAdd)
(virDomainEventStateRegisterID): Likewise.
* src/conf/network_event.c (virNetworkEventStateRegisterID):
Likewise.
* tests/objecteventtest.c (testDomainCreateXMLMixed): Enhance test.

Signed-off-by: Eric Blake <eblake@redhat.com>
2014-01-07 12:03:42 -07:00
..
capabilityschemadata capabilities: add baselabel per sec driver/virt type to secmodel 2013-10-29 07:06:04 -06:00
commanddata build: clean up stray files found by 'make distcheck' 2013-05-06 14:01:08 -06:00
confdata Change the default of mdns_adv to false 2012-03-27 09:54:49 -06:00
cputestdata cpu: Add cpu test cases for PPC CPU driver. 2013-09-05 12:31:10 +01:00
domainschemadata Add XML config for resource partitions 2013-04-15 17:35:31 +01:00
domainsnapshotxml2xmlin domainsnapshotxml2xmltest: Add test case for empty driver element 2013-12-05 09:41:30 +01:00
domainsnapshotxml2xmlout domainsnapshotxml2xmltest: Add test case for empty driver element 2013-12-05 09:41:30 +01:00
fchostdata/fc_host tests: Add tests for fc_host 2013-05-13 17:24:18 +08:00
interfaceschemadata Update interface.rng and xml test files to match netcf 0.1.5 2010-01-19 21:13:03 +01:00
lxcxml2xmldata Allow root directory in filesystem source dir schema 2013-11-07 18:43:15 +01:00
lxcxml2xmloutdata Allow root directory in filesystem source dir schema 2013-11-07 18:43:15 +01:00
networkxml2confdata Add forwarder attribute to <dns/> element 2013-09-17 17:47:33 -06:00
networkxml2xmlin Add forwarder attribute to <dns/> element 2013-09-17 17:47:33 -06:00
networkxml2xmlout Add forwarder attribute to <dns/> element 2013-09-17 17:47:33 -06:00
networkxml2xmlupdatein Test network update XML parsing 2013-08-28 08:05:46 +02:00
networkxml2xmlupdateout Test network update XML parsing 2013-08-28 08:05:46 +02:00
nodedevschemadata nodedev: add iommuGroup to node device object 2013-06-26 14:10:56 -04:00
nodeinfodata nodeinfotest: Add test data from a AMD bulldozer machine. 2012-11-13 00:35:36 +01:00
nwfilterxml2xmlin nwfilter: Add support for ipset 2012-05-21 06:26:34 -04:00
nwfilterxml2xmlout nwfilter: Add support for ipset 2012-05-21 06:26:34 -04:00
qemucapabilitiesdata qemu: ask for -enable-fips when FIPS is required 2013-12-18 07:05:29 -07:00
qemuhelpdata qemu: Support setting the 'removable' flag for USB disks 2013-09-02 14:45:38 +02:00
qemuhotplugtestdata qemuhotplugtest: Add tests for virtio SCSI disk hotplug 2013-08-26 16:09:56 +02:00
qemumonitorjsondata qemu: Add monitor APIs to fetch CPUID data from QEMU 2013-11-08 09:44:36 +01:00
qemuxml2argvdata AArch64: Porting of armv7l conditons to run qemu for aarch64. 2014-01-06 11:02:24 -05:00
qemuxml2xmloutdata conf: don't format memtune with unlimited values 2013-12-10 09:11:26 +01:00
qemuxmlnsdata qemu: Set QEMU_AUDIO_DRV=none with -nographic 2013-09-02 16:53:39 -04:00
securityselinuxlabeldata selinux: enhance test to cover nfs label failure 2013-08-20 10:46:58 -06:00
sexpr2xmldata storage: treat 'aio' like 'raw' at parse time 2012-10-19 17:35:09 -06:00
storagepoolschemadata schema: require target path in storage pool xml 2013-05-17 08:33:22 +02:00
storagepoolxml2xmlin storage: document gluster pool 2013-11-25 11:03:19 -07:00
storagepoolxml2xmlout storage: document gluster pool 2013-11-25 11:03:19 -07:00
storagevolschemadata schema: make source optional in volume XML 2013-05-17 08:35:08 +02:00
storagevolxml2argvdata Always specify qcow2 compat level on qemu-img command line 2013-08-27 12:45:58 +02:00
storagevolxml2xmlin storage: improve directory support in gluster pool 2013-11-25 12:46:19 -07:00
storagevolxml2xmlout storage: improve directory support in gluster pool 2013-11-25 12:46:19 -07:00
sysinfodata aarch64: Fix sysinfo test. 2014-01-01 16:34:13 +00:00
virfiledata Fix bug in identifying sub-mounts 2013-11-28 11:49:01 +00:00
virpcitestdata Read PCI class from sysfs class file instead of config space. 2014-01-07 17:33:59 +01:00
vmwareverdata VMware: Add Fusion version test 2013-09-30 16:58:37 -05:00
vmx2xmldata esx: Fix floppy.fileName handling in the vmx file parser 2013-10-15 11:39:02 +01:00
xencapsdata Add suspend info to Xen, LXC and UML hypervisor capabilities 2011-11-30 10:12:30 +00:00
xmconfigdata numad: Always output 'placement' of <vcpu> 2012-05-08 16:57:37 -06:00
xml2sexprdata Xen: Fix <clock> handling 2012-04-02 09:33:54 -06:00
xml2vmxdata esx: Fix floppy.fileName handling in the vmx file parser 2013-10-15 11:39:02 +01:00
.valgrind.supp valgrind: Adjust filter for _dl_allocate_tls 2013-08-01 17:04:28 -04:00
capabilityschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
commandhelper.c testutils: Resolve Coverity issues 2013-07-11 14:18:11 -04:00
commandtest.c Make virCommand env handling robust in setuid env 2013-10-21 14:03:52 +01:00
cpuset virBitmapParse: Fix behavior in case of error and fix up callers 2013-08-22 11:38:36 +02:00
cputest.c tests: guarantee abs_srcdir in all C tests 2013-11-27 14:39:56 -07:00
define-dev-segfault numad: Always output 'placement' of <vcpu> 2012-05-08 16:57:37 -06:00
domainschematest LXC: Fix handling of RAM filesystem size units 2013-10-09 17:44:45 +02:00
domainsnapshotschematest Domain snapshot RNG and tests. 2010-05-20 13:50:03 -04:00
domainsnapshotxml2xmltest.c domainsnapshotxml2xmltest: Add test case for empty driver element 2013-12-05 09:41:30 +01:00
esxutilstest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
eventtest.c Convert 'int i' to 'size_t i' in tests/ files 2013-07-10 17:40:13 +01:00
fchosttest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
fdstreamtest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
int-overflow tests: Don't use bash if we don't have to 2011-07-29 17:17:21 +02:00
interfaceschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
interfacexml2xmltest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
jsontest.c Error out on unterminated arrays and objects in JSON parser 2013-11-20 12:35:44 +01:00
libvirtd-fail Fix up "make check" 2009-10-07 12:18:13 +02:00
libvirtd-pool Fix up "make check" 2009-10-07 12:18:13 +02:00
libvirtdconftest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
lxcxml2xmltest.c Allow root directory in filesystem source dir schema 2013-11-07 18:43:15 +01:00
Makefile.am Added domain start/stop/define/undefine event unit tests 2013-12-10 11:23:20 +00:00
metadatatest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
networkschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
networkxml2conftest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
networkxml2xmltest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
networkxml2xmlupdatetest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
nodedevschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
nodedevxml2xmltest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
nodeinfotest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
nwfilterschematest nwfilter: Add filter schema for nwfilter XML, extend domain XML schema 2010-04-06 11:09:46 -04:00
nwfilterxml2xmltest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
object-locking.ml Rename 'DeviceMonitor' to 'NodeDeviceDriver' 2013-04-24 10:59:53 +01:00
objecteventtest.c event: don't turn offline domain into global event 2014-01-07 12:03:42 -07:00
oomtrace.pl Remove tabs from all perl files & enforce this 2012-07-30 13:09:57 +01:00
openvzutilstest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
openvzutilstest.conf openvz: Add simple test for openvzReadNetworkConf 2011-06-01 11:58:15 +02:00
pkix_asn1_tab.c Add a test case for certificate validation 2011-07-22 15:18:32 +01:00
qemuagenttest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
qemuargv2xmltest.c virsh domxml-from-native to treat SCSI as the bus type for pseries by default 2013-11-25 10:44:46 -05:00
qemucapabilitiestest.c qemu: ask for -enable-fips when FIPS is required 2013-12-18 07:05:29 -07:00
qemuhelptest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
qemuhotplugtest.c Renamed virDomainEventState to virObjectEventState 2013-12-10 11:35:34 +00:00
qemumonitorjsontest.c qemumonitorjsontest: Introduce GetNonExistingCPUData test 2013-11-19 16:30:28 +01:00
qemumonitortest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
qemumonitortestutils.c Remove (nearly) all use of getuid()/getgid() 2013-10-21 14:03:52 +01:00
qemumonitortestutils.h tests: Learn qemuMonitorTestNew optional greeting 2013-10-01 10:48:47 +02:00
qemuxml2argvtest.c AArch64: Porting of armv7l conditons to run qemu for aarch64. 2014-01-06 11:02:24 -05:00
qemuxml2xmltest.c qemu: add support for -device pvpanic 2013-12-13 05:53:33 -07:00
qemuxmlnstest.c tests: guarantee abs_srcdir in all C tests 2013-11-27 14:39:56 -07:00
read-bufsiz maint: avoid regression on copyright listings 2012-07-27 07:42:34 -06:00
read-non-seekable maint: avoid regression on copyright listings 2012-07-27 07:42:34 -06:00
reconnect.c test: Refactor setting of dummy error handlers 2013-09-17 16:45:53 +02:00
schematestutils.sh tests: skip schema validation tests if xmllint is missing 2013-08-23 15:23:44 -06:00
seclabeltest.c tests: uniformly report test failures 2013-02-25 17:38:11 -07:00
securityselinuxhelper.c tests: avoid compile failure on linux kernels older than 2.6.19 2013-10-07 08:40:30 -06:00
securityselinuxlabeltest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
securityselinuxtest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
sexpr2xmltest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
shunloadhelper.c shunloadtest: Resolve Coverity CHECKED_RETURN error 2013-05-21 09:22:21 -04:00
shunloadtest.c build: fix shunloadtest breakage 2013-07-29 13:09:39 -06:00
sockettest.c virsocket: Introduce virSocketAddrIsWildcard 2013-10-11 11:05:06 +02:00
ssh.c build: fix shunloadtest breakage 2013-07-29 13:09:39 -06:00
start maint: avoid regression on copyright listings 2012-07-27 07:42:34 -06:00
statstest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
storagebackendsheepdogtest.c Build breaker - requires VIR_FROM_THIS 2013-05-10 08:52:43 -04:00
storagepoolschematest schema: require target path in storage pool xml 2013-05-17 08:33:22 +02:00
storagepoolxml2xmltest.c storage: document gluster pool 2013-11-25 11:03:19 -07:00
storagevolschematest schema: make source optional in volume XML 2013-05-17 08:35:08 +02:00
storagevolxml2argvtest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
storagevolxml2xmltest.c storage: improve directory support in gluster pool 2013-11-25 12:46:19 -07:00
sysinfotest.c tests: sysinfotest: Actual/expected were swapped in error message. 2014-01-01 16:34:13 +00:00
test_conf.c viralloc: Report OOM error on failure 2013-07-10 11:07:31 +02:00
test_conf.sh rename tests/conftest.c 2013-03-19 13:13:28 -06:00
test-lib.sh test-lib: Make case skipping possible 2013-09-13 10:25:56 +02:00
testutils.c tests: guarantee abs_srcdir in all C tests 2013-11-27 14:39:56 -07:00
testutils.h tests: guarantee abs_srcdir in all C tests 2013-11-27 14:39:56 -07:00
testutilslxc.c virCaps: get rid of defaultConsoleTargetType callback 2013-04-04 22:42:39 +02:00
testutilslxc.h Add support for setting init argv for LXC 2012-03-27 15:52:25 +01:00
testutilsqemu.c AArch64: Porting of armv7l conditons to run qemu for aarch64. 2014-01-06 11:02:24 -05:00
testutilsqemu.h build: skip qemu in tests when !WITH_QEMU 2013-05-31 11:35:34 -06:00
testutilsxen.c virCaps: get rid of defaultConsoleTargetType callback 2013-04-04 22:42:39 +02:00
testutilsxen.h virCaps: get rid of defaultConsoleTargetType callback 2013-04-04 22:42:39 +02:00
utiltest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
vcpupin maint: avoid regression on copyright listings 2012-07-27 07:42:34 -06:00
viratomictest.c maint: fix comma style issues: tests, tools 2013-11-20 09:14:55 -07:00
virauthconfigtest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virbitmaptest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virbuftest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
vircgroupmock.c maint: fix comma style issues: tests, tools 2013-11-20 09:14:55 -07:00
vircgrouptest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virdbustest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virdrivermoduletest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virendiantest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virfiletest.c Fix bug in identifying sub-mounts 2013-11-28 11:49:01 +00:00
virhashdata.h Rename hash.h and hash.c to virhash.h and virhash.c 2012-01-26 14:11:13 +00:00
virhashtest.c maint: avoid 'const fooPtr' in hashes 2013-10-14 11:40:24 -06:00
viridentitytest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virkeycodetest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virkeyfiletest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virlockspacetest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virlogtest.c Fix flaw in detecting log format 2013-10-14 10:31:01 +01:00
virnetmessagetest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virnetserverclientmock.c Add test case for virNetServerClient object identity code 2013-09-24 09:37:26 +01:00
virnetserverclienttest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virnetsockettest.c tests: fix syntax in previous patch 2014-01-01 09:58:27 -07:00
virnettlscontexttest.c virnettlscontexttest fails with GNUTLS 3.0.28 2013-12-23 13:16:07 -07:00
virnettlshelpers.c Fix parallel runs of TLS test suites 2013-08-09 11:54:41 +01:00
virnettlshelpers.h Fix parallel runs of TLS test suites 2013-08-09 11:54:41 +01:00
virnettlssessiontest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virpcimock.c Read PCI class from sysfs class file instead of config space. 2014-01-07 17:33:59 +01:00
virpcitest.c Read PCI class from sysfs class file instead of config space. 2014-01-07 17:33:59 +01:00
virportallocatortest.c Return -1 in virPortAllocatorAcquire if all ports are used 2013-11-18 12:28:07 +01:00
virsh-all tests: Skip virsh-all test as expensive 2013-08-12 18:47:56 +02:00
virsh-optparse virsh: add snapshot-create-as memspec support 2012-11-07 09:04:18 -07:00
virsh-schedinfo Allow multiple parameters for schedinfo 2013-04-03 08:49:30 +02:00
virsh-synopsis maint: avoid regression on copyright listings 2012-07-27 07:42:34 -06:00
virsh-undefine build: avoid confusing make with raw name 'undefine' 2012-09-12 11:27:22 -06:00
virsh-uriprecedence tests: Don't test user config file if ran as root 2013-09-13 10:25:56 +02:00
virshtest.c virsh: allow alias to expand to opt=value pair 2013-10-24 11:17:41 +01:00
virstoragetest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virstringtest.c Introduce standard methods for sorting strings with qsort 2013-11-28 11:29:46 +00:00
virsystemdmock.c Fix crash in virsystemdtest with dbus 1.7.6 2013-12-19 11:20:05 +00:00
virsystemdtest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
virt-aa-helper-test add vnc unix sockets to apparmor policy 2012-12-11 14:32:39 -07:00
virtimetest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
viruritest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
vmwarevertest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
vmx2xmltest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
xencapstest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
xmconfigtest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
xml2sexprtest.c Remove test case average timing 2013-10-08 12:39:30 +01:00
xml2vmxtest.c Remove test case average timing 2013-10-08 12:39:30 +01:00