libvirt/docs/sitemap.html.in
Daniel P. Berrange 590029f672 Introduce new OOM testing support
The previous OOM testing support would re-run the entire "main"
method each iteration, failing a different malloc each time.
When a test suite has 'n' allocations, the number of repeats
requires is  (n * (n + 1) ) / 2.  This gets very large, very
quickly.

This new OOM testing support instead integrates at the
virtTestRun level, so each individual test case gets repeated,
instead of the entire test suite. This means the values of
'n' are orders of magnitude smaller.

The simple usage is

   $ VIR_TEST_OOM=1 ./qemuxml2argvtest
   ...
   29) QEMU XML-2-ARGV clock-utc                                         ... OK
       Test OOM for nalloc=36 .................................... OK
   30) QEMU XML-2-ARGV clock-localtime                                   ... OK
       Test OOM for nalloc=36 .................................... OK
   31) QEMU XML-2-ARGV clock-france                                      ... OK
       Test OOM for nalloc=38 ...................................... OK
   ...

the second lines reports how many mallocs have to be failed, and thus
how many repeats of the test will be run.

If it crashes, then running under valgrind will often show the problem

  $ VIR_TEST_OOM=1 ../run valgrind ./qemuxml2argvtest

When debugging problems it is also helpful to select an individual
test case

  $ VIR_TEST_RANGE=30 VIR_TEST_OOM=1 ../run valgrind ./qemuxml2argvtest

When things get really tricky, it is possible to request that just
specific allocs are failed. eg to fail allocs 5 -> 12, use

  $ VIR_TEST_RANGE=30 VIR_TEST_OOM=1:5-12 ../run valgrind ./qemuxml2argvtest

In the worse case, you might want to know the stack trace of the
alloc which was failed then VIR_TEST_OOM_TRACE can be set. If it
is set to 1 then it will only print if it thinks a mistake happened.
This is often not reliable, so setting it to 2 will make it print
the stack trace for every alloc that is failed.

  $ VIR_TEST_OOM_TRACE=2 VIR_TEST_RANGE=30 VIR_TEST_OOM=1:5-5 ../run valgrind ./qemuxml2argvtest
  30) QEMU XML-2-ARGV clock-localtime                                   ... OK
      Test OOM for nalloc=36 !virAllocN
  /home/berrange/src/virt/libvirt/src/util/viralloc.c:180
  virHashCreateFull
  /home/berrange/src/virt/libvirt/src/util/virhash.c:144
  virDomainDefParseXML
  /home/berrange/src/virt/libvirt/src/conf/domain_conf.c:11745
  virDomainDefParseNode
  /home/berrange/src/virt/libvirt/src/conf/domain_conf.c:12646
  virDomainDefParse
  /home/berrange/src/virt/libvirt/src/conf/domain_conf.c:12590
  testCompareXMLToArgvFiles
  /home/berrange/src/virt/libvirt/tests/qemuxml2argvtest.c:106
  virtTestRun
  /home/berrange/src/virt/libvirt/tests/testutils.c:250
  mymain
  /home/berrange/src/virt/libvirt/tests/qemuxml2argvtest.c:418 (discriminator 2)
  virtTestMain
  /home/berrange/src/virt/libvirt/tests/testutils.c:750
  ??
  ??:0
  _start
  ??:?
   FAILED

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2014-02-20 15:36:10 +00:00

421 lines
15 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1>Sitemap</h1>
<div id="sitemap">
<ul>
<li>
<a href="index.html">Home</a>
<span>Front page of the libvirt website</span>
</li>
<li>
<a href="news.html">News</a>
<span>Details of new features and bugs fixed in each release</span>
<ul>
<li>
<a href="http://wiki.libvirt.org/page/Maintenance_Releases">Maintenance Releases</a>
<span>Details about libvirt maintenance releases</span>
</li>
</ul>
<ul>
<li>
<a href="http://libvirt.org/git/?p=libvirt.git;a=log">Git log</a>
<span>Latest commit messages from the source repository</span>
</li>
</ul>
</li>
<li>
<a href="apps.html">Applications</a>
<span>Applications known to use libvirt</span>
</li>
<li>
<a href="downloads.html">Downloads</a>
<span>Get the latest source releases, binary builds and get access to the source repository</span>
<ul>
<li>
<a href="windows.html">Windows</a>
<span>Downloads for Windows</span>
</li>
<li>
<a href="bindings.html">Language bindings</a>
<span>Bindings of the libvirt API for languages other than C</span>
</li>
</ul>
</li>
<li>
<a href="docs.html">Documentation</a>
<span>Information for users, administrators and developers</span>
<ul>
<li>
<a href="compiling.html">Compiling</a>
<span>How to compile libvirt</span>
</li>
<li>
<a href="deployment.html">Deployment</a>
<span>Information about deploying and using libvirt</span>
<ul>
<li>
<a href="uri.html">URI format</a>
<span>The URI formats used for connecting to libvirt</span>
</li>
<li>
<a href="remote.html">Remote access</a>
<span>Enable remote access over TCP</span>
</li>
<li>
<a href="auth.html">Authentication</a>
<span>Configure authentication for the libvirt daemon</span>
</li>
<li>
<a href="acl.html">Access control</a>
<span>Configure access control libvirt APIs</span>
<ul>
<li>
<a href="aclpolkit.html">Polkit access control</a>
<span>Using polkit for API access control</span>
</li>
</ul>
</li>
<li>
<a href="migration.html">Migration</a>
<span>Migrating guests between machines</span>
</li>
<li>
<a href="windows.html">Windows port</a>
<span>Access the libvirt daemon from a native Windows client</span>
</li>
<li>
<a href="logging.html">Logging</a>
<span>The library and the daemon logging support</span>
</li>
<li>
<a href="auditlog.html">Audit log</a>
<span>Audit trail logs for host operations</span>
</li>
<li>
<a href="firewall.html">Firewall</a>
<span>Firewall and network filter configuration</span>
</li>
<li>
<a href="locking.html">Disk locking</a>
<span>Ensuring exclusive guest access to disks</span>
</li>
<li>
<a href="cgroups.html">CGroups</a>
<span>Control groups integration</span>
</li>
<li>
<a href="hooks.html">Hooks</a>
<span>Hooks for system specific management</span>
</li>
</ul>
</li>
<li>
<a href="intro.html">Architecture</a>
<span>Overview of the logical subsystems in the libvirt API</span>
<ul>
<li>
<a href="goals.html">Goals</a>
<span>Terminology and goals of libvirt API</span>
</li>
<li>
<a href="api.html">API concepts</a>
<span>The libvirt API concepts</span>
</li>
<li>
<a href="archdomain.html">Domains</a>
<span>Managing virtual machines</span>
</li>
<li>
<a href="archnetwork.html">Network</a>
<span>Providing isolated networks and NAT based network connectivity</span>
</li>
<li>
<a href="archstorage.html">Storage</a>
<span>Managing storage pools and volumes</span>
</li>
<li>
<a href="archnode.html">Node Devices</a>
<span>Enumerating host node devices</span>
</li>
<li>
<a href="secureusage.html">Secure usage</a>
<span>Secure usage of the libvirt APIs</span>
</li>
</ul>
</li>
<li>
<a href="format.html">XML format</a>
<span>Description of the XML formats used in libvirt</span>
<ul>
<li>
<a href="formatdomain.html">Domains</a>
<span>The domain XML format</span>
</li>
<li>
<a href="formatnetwork.html">Networks</a>
<span>The virtual network XML format</span>
</li>
<li>
<a href="formatnwfilter.html">Network Filtering</a>
<span>Network filter XML format</span>
</li>
<li>
<a href="formatstorage.html">Storage</a>
<span>The storage pool and volume XML format</span>
</li>
<li>
<a href="formatstorageencryption.html">Storage Encryption</a>
<span>Storage volume encryption XML format</span>
</li>
<li>
<a href="formatcaps.html">Capabilities</a>
<span>The driver capabilities XML format</span>
</li>
<li>
<a href="formatnode.html">Node Devices</a>
<span>The host device XML format</span>
</li>
<li>
<a href="formatsecret.html">Secrets</a>
<span>The secret XML format</span>
</li>
<li>
<a href="formatsnapshot.html">Snapshots</a>
<span>The snapshot XML format</span>
</li>
</ul>
</li>
<li>
<a href="drivers.html">Drivers</a>
<span>Hypervisor specific driver information</span>
<ul>
<li>
<a href="drvxen.html">Xen</a>
<span>Driver the Xen hypervisor</span>
</li>
<li>
<a href="drvqemu.html">QEMU / KVM</a>
<span>Driver for QEMU, KQEMU, KVM and Xenner</span>
</li>
<li>
<a href="drvlxc.html">Linux Container</a>
<span>Driver for the Linux native container API</span>
</li>
<li>
<a href="drvtest.html">Test</a>
<span>Pseudo-driver simulating APIs in memory for test suites</span>
</li>
<li>
<a href="drvremote.html">Remote</a>
<span>Driver providing secure remote to the libvirt APIs</span>
</li>
<li>
<a href="drvopenvz.html">OpenVZ</a>
<span>Driver for the OpenVZ container technology</span>
</li>
<li>
<a href="drvuml.html">UML</a>
<span>Driver for the User Mode Linux technology</span>
</li>
<li>
<a href="storage.html">Storage</a>
<span>Driver for the storage management APIs</span>
</li>
<li>
<a href="drvvbox.html">VirtualBox</a>
<span>Driver for VirtualBox</span>
</li>
<li>
<a href="drvesx.html">VMware ESX</a>
<span>Driver for VMware ESX</span>
</li>
<li>
<a href="drvvmware.html">VMware Workstation / Player</a>
<span>Driver for VMware Workstation / Player</span>
</li>
<li>
<a href="drvhyperv.html">Microsoft Hyper-V</a>
<span>Driver for Microsoft Hyper-V</span>
</li>
<li>
<a href="drvphyp.html">IBM PowerVM</a>
<span>Driver for IBM PowerVM</span>
</li>
<li>
<a href="drvparallels.html">Parallels</a>
<span>Driver for Parallels Cloud Server</span>
</li>
</ul>
</li>
<li>
<a href="html/index.html">API reference</a>
<span>Reference manual for the C public API</span>
<!-- This is the desired new style API breakdown
<ul>
<li>
<a href="apiconn.html">Connection</a>
<span>API reference for virConnectPtr objects</span>
</li>
<li>
<a href="apidomain.html">Domain</a>
<span>API reference for virDomainPtr objects</span>
</li>
<li>
<a href="apierror.html">Error</a>
<span>API reference for virErrorPtr objects</span>
</li>
<li>
<a href="apinetwork.html">Network</a>
<span>API reference for virNetworkPtr objects</span>
</li>
<li>
<a href="apistorage.html">Storage</a>
<span>API reference for virStoragePoolptr and virStorageVolPtr objects</span>
</li>
<li>
<a href="apinode.html">Node Device</a>
<span>API reference for virNodeDevicePtr objects</span>
</li>
</ul>
-->
<ul>
<li>
<a href="html/libvirt-libvirt.html">libvirt</a>
<span>core interfaces for the libvirt library</span>
</li>
<li>
<a href="html/libvirt-virterror.html">virterror</a>
<span>error handling interfaces for the libvirt library</span>
</li>
<li>
<a href="hvsupport.html">Driver support</a>
<span>matrix of API support per hypervisor per release</span>
</li>
</ul>
</li>
<li>
<a href="bindings.html">Language bindings</a>
<span>Bindings of the libvirt API for other languages</span>
<ul>
<li>
<a href="python.html">Python</a>
<span>overview of the python API bindings</span>
</li>
<li>
<a href="java.html">Java</a>
<span>overview of the Java API bindings</span>
</li>
<li>
<a href="csharp.html">C#</a>
<span>overview of the C# API bindings</span>
</li>
<li>
<a href="php.html">PHP</a>
<span>overview of the PHP API bindings</span>
</li>
</ul>
</li>
<li>
<a href="internals.html">Internals</a>
<span>Working on the internals of libvirt API, driver and daemon code</span>
<ul>
<li>
<a href="hacking.html">Contributor guidelines</a>
<span>General hacking guidelines for contributors</span>
</li>
<li>
<a href="api_extension.html">API extensions</a>
<span>Adding new public libvirt APIs</span>
</li>
<li>
<a href="internals/command.html">Spawning commands</a>
<span>Spawning commands from libvirt driver code</span>
</li>
<li>
<a href="internals/rpc.html">RPC protocol &amp; APIs</a>
<span>RPC protocol information and API / dispatch guide</span>
</li>
<li>
<a href="internals/locking.html">Lock managers</a>
<span>Use lock managers to protect disk content</span>
</li>
<li>
<a href="internals/oomtesting.html">Out of memory testing</a>
<span>Simulating OOM conditions in the test suite</span>
</li>
</ul>
</li>
<li>
<a href="devguide.html">Development Guide</a>
<span>A guide and reference for developing with libvirt</span>
</li>
<li>
<a href="virshcmdref.html">Virsh Commands</a>
<span>Command reference for virsh</span>
</li>
<li>
<a href="governance.html">Governance</a>
<span>Project governance and code of conduct</span>
</li>
</ul>
</li>
<li>
<a href="http://wiki.libvirt.org">Wiki</a>
<span>User contributed content</span>
</li>
<li>
<a href="http://wiki.libvirt.org/page/FAQ">FAQ</a>
<span>Frequently asked questions</span>
</li>
<li>
<a href="bugs.html">Bug reports</a>
<span>How and where to report bugs and request features</span>
<ul>
<li>
<a href="securityprocess.html">Security Process</a>
<span>Security bug reporting and resolution process</span>
</li>
<li>
<a href="todo.html">Todo list</a>
<span>Main feature request list</span>
</li>
<li>
<a href="pending.html">Pending patches</a>
<span>Pending patches awaiting reviews and integration</span>
</li>
</ul>
</li>
<li>
<a href="contact.html">Contact</a>
<span>How to contact the developers via email and IRC</span>
</li>
<li>
<a href="testsuites.html">Test suites</a>
<span>Available test suites for libvirt</span>
<ul>
<li>
<a href="testtck.html">TCK test suite</a>
<span>Virtualization functional test suite in Perl</span>
</li>
<li>
<a href="testapi.html">Libvirt-test-API</a>
<span>Libvirt functional API test suite in Python</span>
</li>
</ul>
</li>
<li>
<a href="relatedlinks.html">Related Links</a>
<span>Miscellaneous links of interest related to libvirt</span>
</li>
<li>
<a href="sitemap.html">Sitemap</a>
<span>Overview of all content on the website</span>
</li>
</ul>
</div>
</body>
</html>