cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<?xml version="1.0" encoding="utf-8" ?>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<head>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<title>The VirtualBox Validation Kit</title>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<style type="text/css">
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync/*
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync:Author: David Goodger (goodger@python.org)
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync:Id: $Id$
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync:Copyright: This stylesheet has been placed in the public domain.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncDefault cascading style sheet for the HTML output of Docutils.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynccustomize this style sheet.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync*/
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync/* used to remove borders from tables and images */
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync.borderless, table.borderless td, table.borderless th {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync border: 0 }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynctable.borderless td, table.borderless th {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync /* Override padding for "table.docutils td" with "! important".
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync The right padding separates the table cells. */
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync padding: 0 0.5em 0 0 ! important }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync.first {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync /* Override more specific margin styles with "! important". */
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-top: 0 ! important }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync.last, .with-subtitle {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-bottom: 0 ! important }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync.hidden {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync display: none }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynca.toc-backref {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync text-decoration: none ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync color: black }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncblockquote.epigraph {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin: 2em 5em ; }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdl.docutils dd {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-bottom: 0.5em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncobject[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync overflow: hidden;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync/* Uncomment (and remove this text!) to get bold-faced definition list terms
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdl.docutils dt {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-weight: bold }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync*/
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.abstract {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin: 2em 5em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.abstract p.topic-title {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-weight: bold ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync text-align: center }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.admonition, div.attention, div.caution, div.danger, div.error,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.hint, div.important, div.note, div.tip, div.warning {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin: 2em ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync border: medium outset ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync padding: 1em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.admonition p.admonition-title, div.hint p.admonition-title,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.important p.admonition-title, div.note p.admonition-title,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.tip p.admonition-title {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-weight: bold ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-family: sans-serif }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.attention p.admonition-title, div.caution p.admonition-title,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.danger p.admonition-title, div.error p.admonition-title,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.warning p.admonition-title, .code .error {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync color: red ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-weight: bold ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-family: sans-serif }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync/* Uncomment (and remove this text!) to get reduced vertical space in
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync compound paragraphs.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.compound .compound-first, div.compound .compound-middle {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-bottom: 0.5em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.compound .compound-last, div.compound .compound-middle {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-top: 0.5em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync*/
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.dedication {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin: 2em 5em ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync text-align: center ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-style: italic }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.dedication p.topic-title {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-weight: bold ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-style: normal }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.figure {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-left: 2em ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-right: 2em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.footer, div.header {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync clear: both;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-size: smaller }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.line-block {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync display: block ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-top: 1em ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-bottom: 1em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.line-block div.line-block {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-top: 0 ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-bottom: 0 ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-left: 1.5em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.sidebar {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin: 0 0 0.5em 1em ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync border: medium outset ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync padding: 1em ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync background-color: #ffffee ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync width: 40% ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync float: right ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync clear: right }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.sidebar p.rubric {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-family: sans-serif ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-size: medium }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.system-messages {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin: 5em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.system-messages h1 {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync color: red }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.system-message {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync border: medium outset ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync padding: 1em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.system-message p.system-message-title {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync color: red ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-weight: bold }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.topic {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin: 2em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynch1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynch4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-top: 0.4em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynch1.title {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync text-align: center }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynch2.subtitle {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync text-align: center }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynchr.docutils {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync width: 75% }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncimg.align-left, .figure.align-left, object.align-left {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync clear: left ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync float: left ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-right: 1em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncimg.align-right, .figure.align-right, object.align-right {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync clear: right ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync float: right ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-left: 1em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncimg.align-center, .figure.align-center, object.align-center {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync display: block;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-left: auto;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-right: auto;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync.align-left {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync text-align: left }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync.align-center {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync clear: both ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync text-align: center }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync.align-right {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync text-align: right }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync/* reset inner alignment in figures */
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdiv.align-right {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync text-align: inherit }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync/* div.align-center * { */
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync/* text-align: left } */
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncol.simple, ul.simple {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-bottom: 1em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncol.arabic {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync list-style: decimal }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncol.loweralpha {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync list-style: lower-alpha }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncol.upperalpha {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync list-style: upper-alpha }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncol.lowerroman {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync list-style: lower-roman }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncol.upperroman {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync list-style: upper-roman }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncp.attribution {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync text-align: right ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-left: 50% }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncp.caption {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-style: italic }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncp.credits {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-style: italic ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-size: smaller }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncp.label {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync white-space: nowrap }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncp.rubric {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-weight: bold ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-size: larger ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync color: maroon ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync text-align: center }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncp.sidebar-title {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-family: sans-serif ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-weight: bold ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-size: larger }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncp.sidebar-subtitle {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-family: sans-serif ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-weight: bold }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncp.topic-title {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-weight: bold }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncpre.address {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-bottom: 0 ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-top: 0 ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font: inherit }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncpre.literal-block, pre.doctest-block, pre.math, pre.code {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-left: 2em ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-right: 2em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncpre.code .ln { color: grey; } /* line numbers */
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncpre.code, code { background-color: #eeeeee }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncpre.code .comment, code .comment { color: #5C6576 }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncpre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncpre.code .literal.string, code .literal.string { color: #0C5404 }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncpre.code .name.builtin, code .name.builtin { color: #352B84 }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncpre.code .deleted, code .deleted { background-color: #DEB0A1}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncpre.code .inserted, code .inserted { background-color: #A3D289}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncspan.classifier {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-family: sans-serif ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-style: oblique }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncspan.classifier-delimiter {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-family: sans-serif ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-weight: bold }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncspan.interpreted {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-family: sans-serif }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncspan.option {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync white-space: nowrap }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncspan.pre {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync white-space: pre }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncspan.problematic {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync color: red }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncspan.section-subtitle {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync /* font-size relative to parent (h1..h6 element) */
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-size: 80% }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynctable.citation {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync border-left: solid 1px gray;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-left: 1px }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynctable.docinfo {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin: 2em 4em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynctable.docutils {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-top: 0.5em ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-bottom: 0.5em }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynctable.footnote {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync border-left: solid 1px black;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync margin-left: 1px }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynctable.docutils td, table.docutils th,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynctable.docinfo td, table.docinfo th {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync padding-left: 0.5em ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync padding-right: 0.5em ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync vertical-align: top }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynctable.docutils th.field-name, table.docinfo th.docinfo-name {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-weight: bold ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync text-align: left ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync white-space: nowrap ;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync padding-left: 0 }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync/* "booktabs" style (no vertical lines) */
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsynctable.docutils.booktabs {
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync border: 0px;
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync border-top: 2px solid;
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync border-bottom: 2px solid;
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync border-collapse: collapse;
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync}
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsynctable.docutils.booktabs * {
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync border: 0px;
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync}
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsynctable.docutils.booktabs th {
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync border-bottom: thin solid;
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync text-align: left;
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync}
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynch1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynch4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync font-size: 100% }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncul.auto-toc {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync list-style-type: none }
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</style>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</head>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<body>
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync<div class="document" id="the-virtualbox-validation-kit">
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<h1 class="title">The VirtualBox Validation Kit</h1>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<div class="section" id="introduction">
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<h1>Introduction</h1>
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync<p>The VirtualBox Validation Kit is our new public tool for doing automated
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsynctesting of VirtualBox. We are continually working on adding new features
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsyncand guest operating systems to our battery of tests.</p>
bf898cb7c4502a335cd7e0f2427ea3a0abc591ccvboxsync<p>We warmly welcome contributions, new ideas for good tests and fixes.</p>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</div>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<div class="section" id="directory-layout">
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<h1>Directory Layout</h1>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dl class="docutils">
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dt>/docs/</dt>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dd><p class="first">The documentation for the test suite mostly lives here, the exception being
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncreadme.txt files that are better off living near what they concern.</p>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<p class="last">For a definition of terms used here, see the Definitions / Glossary section
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncof /docs/AutomaticTestingRevamp.txt / /docs/AutomaticTestingRevamp.html.</p>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</dd>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dt>/testdriver/</dt>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dd><p class="first">Python module implementing the base test drivers and supporting stuff.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncThe base test driver implementation is found in /testdriver/base.py while
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncthe VBox centric specialization is in /testdriver/vbox.py. Various VBox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncAPI wrappers that makes things easier to use and glosses over a lot of API
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncversion differences that live in /testdriver/vboxwrappers.py.</p>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<p>Test VM collections are often managed thru /testdriver/vboxtestvms.py, but
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdoesn't necessarily have to be, it's up to the individual test driver.</p>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<p>For logging, reporting result, uploading useful files and such we have a
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncreporter singleton sub-package, /testdriver/reporter.py. It implements
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncboth local (for local testing) and remote (for testboxes + test manager)
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncreporting.</p>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<p class="last">There is also a VBoxTXS client implementation in txsclient.py and a stacked
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynctest driver for installing VBox (vboxinstaller.py). Most test drivers will
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncuse the TXS client indirectly thru vbox.py methods. The installer driver
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncis a special trick for the testbox+testmanager setup.</p>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</dd>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dt>/tests/</dt>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dd>The python scripts driving the tests. These are organized by what they
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynctest and are all derived from the base classes in /testdriver (mostly from
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncvbox.py of course). Most tests use one or more VMs from a standard set of
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncpreconfigured VMs defined by /testdriver/vboxtestvms.py (mentioned above),
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncthough the installation tests used prepared ISOs and floppy images.</dd>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dt>/vms/</dt>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dd>Text documents describing the preconfigured test VMs defined by
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync/testdrive/vboxtestvms.py. This will also contain description of how to
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncprepare installation ISOs when we get around to it (soon).</dd>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dt>/utils/</dt>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dd><p class="first">Test utilities and lower level test programs, compiled from C, C++ and
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncAssembly mostly. Generally available for both host and guest, i.e. in the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynczip and on the VBoxValidationKit.iso respectively.</p>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<p>The Test eXecution Service (VBoxTXS) found in /utils/TestExecServ is one
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncof the more important utilities. It implements a remote execution service
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncfor running programs/tests inside VMs and on other test boxes. See
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync/utils/TestExecServ/vboxtxs-readme.txt for more details.</p>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<p class="last">A simple network bandwidth and latency test program can be found in
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync/utils/network/NetPerf.cpp.</p>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</dd>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dt>/bootsectors/</dt>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dd><p class="first">Boot sector test environment. This allows creating floppy images in
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncassembly that tests specific CPU or device behaviour. Most tests can be
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncput on a USB stick, floppy or similar and booted up on real hardware for
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynccomparison. All floppy images can be used for manual testing by developers
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncand most will be used by test drivers (/tests/<em>/td</em>.py) sooner or later.</p>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<p class="last">The boot sector environment is heavily bound to yasm and it's ability to
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynclink binary images for single assembly input units. There is a &quot;library&quot;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncof standard initialization code and runtime code, which include switch to
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncall (well V8086 mode is still missing, but we'll get that done eventually)
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncprocessor modes and paging modes. The image specific code is split into
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinit/driver code and test template, the latter can be instantiated for each
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncprocess execution+paging mode.</p>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</dd>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dt>/common/</dt>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dd>Python package containing common python code.</dd>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dt>/testboxscript/</dt>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dd>The testbox script. This is installed on testboxes used for automatic
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynctesting with the testmanager.</dd>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dt>/testmanager/</dt>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dd>The VirtualBox Test Manager (server side code). This is written in Python
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncand currently uses postgresql as database backend for no particular reason
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncother than that it was already installed on the server the test manager was
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncgoing to run on. It's relatively generic, though there are of course
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncthings in there that are of more use when testing VirtualBox than other
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncthings. A more detailed account (though perhaps a little dated) of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynctest manager can be found in /docs/AutomaticTestingRevamp.txt and
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync/docs/AutomaticTestingRevamp.html.</dd>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dt>/testanalysis/</dt>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dd>A start a local test result analysis, comparing network test output. We'll
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncprobably be picking this up again later.</dd>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dt>/snippets/</dt>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dd>Various code snippets that may be turned into real tests at some point.</dd>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</dl>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<table class="docutils field-list" frame="void" rules="none">
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<col class="field-name" />
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<col class="field-body" />
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<tbody valign="top">
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<tr class="field"><th class="field-name">Status:</th><td class="field-body">$Id$</td>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</tr>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<tr class="field"><th class="field-name">Copyright:</th><td class="field-body">Copyright (C) 2010-2014 Oracle Corporation.</td>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</tr>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</tbody>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</table>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</div>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</div>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</body>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</html>