libvirt/tests
Michal Privoznik cfcbba4c2b lib: Replace qsort() with g_qsort_with_data()
While glibc provides qsort(), which usually is just a mergesort,
until sorting arrays so huge that temporary array used by
mergesort would not fit into physical memory (which in our case
is never), we are not guaranteed it'll use mergesort. The
advantage of mergesort is clear - it's stable. IOW, if we have an
array of values parsed from XML, qsort() it and produce some
output based on those values, we can then compare the output with
some expected output, line by line.

But with newer glibc this is all history. After [1], qsort() is
no longer mergesort but introsort instead, which is not stable.
This is suboptimal, because in some cases we want to preserve
order of equal items. For instance, in ebiptablesApplyNewRules(),
nwfilter rules are sorted by their priority. But if two rules
have the same priority, we want to keep them in the order they
appear in the XML. Since it's hard/needless work to identify
places where stable or unstable sorting is needed, let's just
play it safe and use stable sorting everywhere.

Fortunately, glib provides g_qsort_with_data() which indeed
implement mergesort and it's a drop in replacement for qsort(),
almost. It accepts fifth argument (pointer to opaque data), that
is passed to comparator function, which then accepts three
arguments.

We have to keep one occurance of qsort() though - in NSS module
which deliberately does not link with glib.

1: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=03bf8357e8291857a435afcc3048e0b697b6cc04
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
2023-11-24 09:53:14 +01:00
..
bhyveargv2xmldata
bhyvefirmwaredata
bhyvexml2argvdata
bhyvexml2xmloutdata
capabilityschemadata
chxml2xmlin tests: chxml2xmlin: Fix path format for fake paths 2023-08-25 10:07:36 +02:00
chxml2xmlout
commanddata
cputestdata scripts: Fix the flake8 syntax-check failures 2023-06-29 11:51:27 +02:00
domainbackupxml2xmlin schemas: backup: Allow missing 'type' attribute for backup disk 2023-05-16 10:26:33 +02:00
domainbackupxml2xmlout schemas: backup: Allow missing 'type' attribute for backup disk 2023-05-16 10:26:33 +02:00
domaincapsdata qemucapabilitiestest: Update capabilities data for 8.2 dev cycle on x86_64 2023-11-10 10:04:04 +01:00
domainconfdata
domainschemadata tests: qemu: Move testing of default cache and disk source with space to 'sata-device' 2023-03-06 20:55:49 +01:00
fchostdata/fc_host
genericxml2xmlindata conf: Generate MAC address instead of keeping all zeroes 2023-09-04 16:01:24 +02:00
genericxml2xmloutdata conf: Generate MAC address instead of keeping all zeroes 2023-09-04 16:01:24 +02:00
interfaceschemadata
libxlxml2domconfigdata libxl: Support specifying a custom firmware path 2023-03-10 11:01:42 -07:00
lxcconf2xmldata
lxcxml2xmldata
lxcxml2xmloutdata
networkxml2confdata
networkxml2firewalldata
networkxml2xmlin
networkxml2xmlout
networkxml2xmlupdatein
networkxml2xmlupdateout
nodedevmdevctldata nodedevmdevctltest: Introduce a test case for empty mdevctl output 2023-08-24 13:46:22 +02:00
nodedevschemadata
nodedevxml2xmlout
nssdata
nwfilterxml2firewalldata
nwfilterxml2xmlin nwfilterxml2xmltest: Add test case for parser and formatter quirks 2023-06-05 13:23:06 +02:00
nwfilterxml2xmlout virNWFilterRuleDefDetailsFormat: Refactor formatter 2023-06-05 13:23:06 +02:00
qemuagentdata qemuagenttest: Use real x86_64 capabilities for parsing domain definitions 2023-07-20 15:23:34 +02:00
qemublocktestdata qemuBlockStorageSourceGetBackendProps: Unify ordering of fields 2023-11-02 15:31:10 +01:00
qemucapabilitiesdata qemucapabilitiestest: Update capabilities data for 8.2 dev cycle on x86_64 2023-11-10 10:04:04 +01:00
qemucaps2xmloutdata capabilities: report full external snapshot support 2023-10-09 15:06:59 +02:00
qemudomaincheckpointxml2xmlin
qemudomaincheckpointxml2xmlout qemudomaincheckpointxml2xmltest: Use real 'x86_64' capabilities in all test data 2023-07-20 15:23:43 +02:00
qemudomainsnapshotxml2xmlin
qemudomainsnapshotxml2xmlout tests: qemudomainsnapshotxml2xmlout: Use real 'x86_64' capabilities in all test data 2023-07-20 15:23:24 +02:00
qemufirmwaredata tests: Drop tags from BIOS firmware descriptor 2023-08-21 13:51:26 +02:00
qemuhotplugtestcpus tests: qemuhotplugtest: Fix arch-specific parts of 'ppc64' test XMLs 2023-09-04 10:31:52 +02:00
qemuhotplugtestdevices qemu: Move channelTargetDir into stateDir 2023-08-17 17:22:09 +02:00
qemuhotplugtestdomains qemu: Move channelTargetDir into stateDir 2023-08-17 17:22:09 +02:00
qemumemlockdata qemu_domain: Increase memlock limit for NVMe disks 2023-04-20 08:37:22 +02:00
qemumigparamsdata tests: qemumigparamsdata: Drop deprecated fields 2023-11-10 10:04:04 +01:00
qemumigrationcookiexmldata
qemumonitorjsondata
qemunbdkitdata qemu: implement ssh-agent auth for ssh disks with nbdkit 2023-09-19 14:28:50 -05:00
qemusecuritydata
qemustatusxml2xmldata qemu: domain: Identify blockjobs by storage nodename in VM status XML 2023-10-17 14:16:15 +02:00
qemuvhostuserdata
qemuxml2argvdata qemucapabilitiestest: Update capabilities data for 8.2 dev cycle on x86_64 2023-11-10 10:04:04 +01:00
qemuxml2xmloutdata qemuxml2(argv|xml)test: Add network backed disk type='sd' 2023-10-26 09:02:23 +02:00
schemas
secretxml2xmlin
securityselinuxhelperdata
securityselinuxlabeldata
storagepoolcapsschemadata
storagepoolschemadata
storagepoolxml2argvdata
storagepoolxml2xmlin
storagepoolxml2xmlout
storagevolschemadata
storagevolxml2argvdata
storagevolxml2xmlin
storagevolxml2xmlout
sysinfodata
vboxsnapshotxmldata
viracpidata tests: Introduce viracpitest 2023-04-06 12:48:22 +02:00
vircaps2xmldata virnumamock: Introduce virNumaGetNodeOfCPU() mock 2023-03-15 12:46:21 +01:00
vircgroupdata
virconfdata
virfilecachedata
virfiledata
virhostcpudata
virjsondata
virmacmaptestdata
virnetdaemondata
virnetdevopenvswitchdata
virnetdevtestdata/sys/class/net
virnetworkportxml2xmldata
virnwfilterbindingxml2xmldata
virpcitestdata
virprocessstatdata
virresctrldata
virscsidata
virstoragetestdata
virstorageutildata
virusbtestdata/sys_bus_usb/devices
vmwareverdata
vmx2xmldata
xlconfigdata libxl: Add support for custom firmware path in config converter 2023-03-10 11:02:02 -07:00
xmconfigdata
xml2vmxdata
.valgrind.supp tests: Refresh valgrind suppressions 2023-07-20 11:22:08 +02:00
bhyveargv2xmlmock.c
bhyveargv2xmltest.c
bhyvexml2argvmock.c
bhyvexml2argvtest.c
bhyvexml2xmltest.c
chxml2xmltest.c
commandhelper.c lib: Replace qsort() with g_qsort_with_data() 2023-11-24 09:53:14 +01:00
commandtest.c vircommand: Introduce virCommandMassCloseRange() 2023-08-24 12:45:00 +02:00
cputest.c qemu: capabilities: Don't make callers check return of virQEMUCapsNew(Binary) 2023-03-06 20:55:50 +01:00
domaincapsmock.c qemu: S390 does not provide physical address size 2023-07-19 08:42:08 +02:00
domaincapstest.c domaincapstest: Use obviously fake firmware name in capabilities 2023-07-20 15:22:20 +02:00
domainconftest.c
esxutilstest.c
eventtest.c
fchosttest.c
fdstreamtest.c
genericxml2xmltest.c conf: Generate MAC address instead of keeping all zeroes 2023-09-04 16:01:24 +02:00
interfacexml2xmltest.c
libvirtd-fail
libvirtd-pool
libxlmock.c lib: Finish using struct zero initializer manually 2023-08-03 16:41:19 +02:00
libxlxml2domconfigtest.c libxl: Support specifying a custom firmware path 2023-03-10 11:01:42 -07:00
lxcconf2xmltest.c
lxcxml2xmltest.c
meson.build build: suppress "ignoring duplicate libraries" warning on macOS 2023-11-03 15:56:37 -04:00
metadatatest.c
networkmetadatatest.c Add Test driver and testcase for Network Metadata change APIs 2023-08-25 12:36:37 +02:00
networkxml2conftest.c
networkxml2firewalltest.c
networkxml2xmltest.c
networkxml2xmlupdatetest.c
nodedevmdevctltest.c nodedevmdevctltest: Introduce a test case for empty mdevctl output 2023-08-24 13:46:22 +02:00
nodedevxml2xmltest.c
nsslinktest.c
nssmock.c
nsstest.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
nwfilterebiptablestest.c
nwfilterxml2firewalltest.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
nwfilterxml2xmltest.c nwfilterxml2xmltest: Add test case for parser and formatter quirks 2023-06-05 13:23:06 +02:00
objecteventtest.c
openvzutilstest.c
openvzutilstest.conf
permitted_file_access.txt
pkix_asn1_tab.c
qemuagenttest.c qemuagenttest: Use real x86_64 capabilities for parsing domain definitions 2023-07-20 15:23:34 +02:00
qemublocktest.c qemu: block: Remove unused flags QEMU_BLOCK_STORAGE_SOURCE_BACKEND_PROPS_ flags 2023-11-02 15:32:43 +01:00
qemucapabilitiesnumbering.c tests: Add support for multiple variants of data for the same qemu version+architecture 2023-04-03 09:19:06 +02:00
qemucapabilitiestest.c qemucapabilitiestest: Add support for '+hvf' variant 2023-04-03 09:19:06 +02:00
qemucaps2xmlmock.c
qemucaps2xmltest.c virQEMUCapsInitGuestFromBinary: Remove return value 2023-04-03 09:19:07 +02:00
qemucapsprobe.c
qemucapsprobemock.c
qemucommandutiltest.c
qemucpumock.c
qemudomaincheckpointxml2xmltest.c qemudomaincheckpointxml2xmltest: Use real 'x86_64' capabilities in all test data 2023-07-20 15:23:43 +02:00
qemudomainsnapshotxml2xmltest.c tests: qemudomainsnapshotxml2xmlout: Use real 'x86_64' capabilities in all test data 2023-07-20 15:23:24 +02:00
qemufirmwaretest.c tests: Include microvm in firmwaretest 2023-08-21 13:51:27 +02:00
qemuhotplugmock.c qemu: make vdpa connect function more generic 2023-09-12 11:06:41 -05:00
qemuhotplugtest.c qemuhotplugtest: Remove 'modern' field for cpu hotplug tests 2023-09-04 10:31:52 +02:00
qemumemlocktest.c qemumemlocktest: Use 'testQemuInsertRealCaps' 2023-07-20 15:23:16 +02:00
qemumigparamstest.c
qemumigrationcookiexmltest.c qemumigrationcookiexmltest: Don't crash when parsing of status XML fails 2023-11-10 10:04:04 +01:00
qemumonitorjsontest.c tests: Use 'format' layer nodename accessors in test code 2023-10-17 14:16:17 +02:00
qemumonitortestutils.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
qemumonitortestutils.h Drop unused qemuMonitorTestAddItemParams 2023-06-05 13:20:12 +02:00
qemunbdkittest.c qemu: implement keyfile auth for ssh disks with nbdkit 2023-09-19 14:28:50 -05:00
qemusecuritymock.c
qemusecuritytest.c qemuTestCapsCacheInsert*: Drop the file cache rather than poisoning it 2023-03-06 20:55:50 +01:00
qemusecuritytest.h
qemustatusxml2xmltest.c qemustatusxml2xmltest: Demonstrate use of VIR_DOMAIN_DEF_(PARSE|FORMAT)_VOLUME_TRANSLATED 2023-10-17 14:16:14 +02:00
qemuvhostusertest.c
qemuxml2argvmock.c qemu: make vdpa connect function more generic 2023-09-12 11:06:41 -05:00
qemuxml2argvtest.c qemuxml2argvtest: Add '8.1.0' variants of 'cpu-host-model*' tests 2023-11-10 10:04:04 +01:00
qemuxml2xmltest.c qemuxml2argvtest: Consolidate and modernize CPU topology testing 2023-09-06 14:09:45 +02:00
scsihosttest.c
seclabeltest.c
secretxml2xmltest.c
securityselinuxhelper.c
securityselinuxlabeltest.c securityselinuxlabeltest: Convert to testQemuInsertRealCaps 2023-09-06 14:09:42 +02:00
securityselinuxtest.c
shunloadhelper.c
shunloadtest.c
sockettest.c lib: Finish using struct zero initializer manually 2023-08-03 16:41:19 +02:00
ssh.c
storagepoolcapstest.c
storagepoolxml2argvtest.c
storagepoolxml2xmltest.c
storagevolxml2argvtest.c
storagevolxml2xmltest.c
sysinfotest.c
test-lib.sh
testutils.c testutils: Print number of failed tests 2023-07-20 14:59:57 +02:00
testutils.h
testutilshostcpus.h tests: qemu: Add 'ppc' machine caps based on 'qemu-system-ppc' on fedora 2023-03-06 20:55:50 +01:00
testutilslxc.c
testutilslxc.h
testutilsqemu.c tests: add ability to test various nbdkit capabilities 2023-09-19 14:28:50 -05:00
testutilsqemu.h tests: add ability to test various nbdkit capabilities 2023-09-19 14:28:50 -05:00
testutilsqemuschema.c testQEMUSchemaValidateObjectMember: validate QMP object member deprecation 2023-06-05 13:20:13 +02:00
testutilsqemuschema.h
testutilsxen.c virCapabilitiesAllocMachines: Use NULL-terminated list as argument and return count 2023-04-03 09:19:07 +02:00
testutilsxen.h
utiltest.c virStringParseVersion: Parse into 'unsigned long long' 2023-04-03 09:19:06 +02:00
vboxsnapshotxmltest.c
viracpitest.c tests: Introduce viracpitest 2023-04-06 12:48:22 +02:00
viralloctest.c
virauthconfigtest.c
virbitmaptest.c Use G_N_ELEMENTS() more 2023-03-13 13:29:07 +01:00
virbuftest.c
vircaps2xmltest.c
vircgroupmock.c
vircgrouptest.c
virconftest.c
vircryptotest.c vircryptotest: Fix cipher test typo aes265cbc -> aes256cbc 2023-04-03 08:21:27 +02:00
virdnsmasqmock.c
virdriverconnvalidatetest.c
virdrivermoduletest.c
virendiantest.c
virerrortest.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
virfilecachemock.c
virfilecachetest.c
virfilemock.c
virfiletest.c
virfilewrapper.c
virfilewrapper.h
virfirewallmock.c virfirewallmock: Replace virFindFileInPath() with virFirewallDIsRegistered() 2023-05-10 14:44:22 +02:00
virfirewalltest.c tests: Drop dead code 2023-04-04 10:52:15 +02:00
virgdbusmock.c
virhostcpumock.c
virhostcputest.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virhostdevmock.c
virhostdevtest.c util: use "stubDriverType" instead of just "stubDriver" 2023-08-24 23:36:18 -04:00
virhostidmock.c
viridentitytest.c
viriscsitest.c
virjsontest.c virjsontest: Introduce a test case for an empty array 2023-08-24 13:47:41 +02:00
virkeycodetest.c
virkmodtest.c
virlockspacetest.c
virlogtest.c
virmacmaptest.c
virmigtest.c
virmock.h
virmockstathelpers.c virmockstathelpers: Adapt to musl-1.2.4 2023-05-16 08:48:17 +02:00
virnetdaemonmock.c
virnetdaemontest.c
virnetdevbandwidthmock.c
virnetdevbandwidthtest.c
virnetdevmock.c
virnetdevopenvswitchtest.c
virnetdevtest.c Use G_N_ELEMENTS() more 2023-03-13 13:29:07 +01:00
virnetmessagetest.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virnetserverclientmock.c
virnetserverclienttest.c
virnetsockettest.c Decrease scope of some variables 2023-08-03 16:35:11 +02:00
virnettlscontexttest.c
virnettlshelpers.c
virnettlshelpers.h
virnettlssessiontest.c
virnetworkportxml2xmltest.c
virnumamock.c virnumamock: Introduce virNumaGetNodeOfCPU() mock 2023-03-15 12:46:21 +01:00
virnwfilterbindingxml2xmltest.c
virpcimock.c
virpcitest.c util: rename virPCIDeviceGetDriverPathAndName 2023-08-24 23:36:18 -04:00
virpcivpdtest.c
virpolkittest.c
virportallocatormock.c
virportallocatortest.c
virprocessmock.c
virprocessstattest.c
virrandommock.c virrandommock: Drop virRandomGenerateWWN 2023-07-19 13:09:11 +02:00
virresctrltest.c
virrotatingfiletest.c
virschematest.c virschematest: Validate files in 'chxml2xmlin' and 'chxml2xmlout' directories 2023-08-25 10:07:36 +02:00
virscsitest.c
virsh-auth scripts: Fix the flake8 syntax-check failures 2023-06-29 11:51:27 +02:00
virsh-auth.xml
virsh-checkpoint
virsh-cpuset
virsh-define-dev-segfault
virsh-int-overflow
virsh-optparse
virsh-output
virsh-output-commands
virsh-output.out
virsh-read-bufsiz
virsh-read-non-seekable
virsh-schedinfo
virsh-self-test
virsh-snapshot
virsh-start
virsh-undefine
virsh-uriprecedence
virsh-vcpupin
virshtest.c
virstoragetest.c
virstorageutiltest.c
virstringtest.c lib: Replace qsort() with g_qsort_with_data() 2023-11-24 09:53:14 +01:00
virsystemdtest.c
virt-aa-helper-test
virt-admin-self-test
virtestmock.c
virtimetest.c
virtypedparamtest.c
viruritest.c
virusbmock.c
virusbtest.c
vmwarevertest.c
vmx2xmltest.c
vshtabletest.c
xlconfigtest.c
xmconfigtest.c
xml2vmxtest.c