1 |
|
---|
2 | The VirtualBox Validation Kit
|
---|
3 | =============================
|
---|
4 |
|
---|
5 |
|
---|
6 | Introduction
|
---|
7 | ------------
|
---|
8 |
|
---|
9 | The VirtualBox Validation Kit is our new public tool for doing automated
|
---|
10 | testing of VirtualBox. We are continually working on adding new features
|
---|
11 | and guest operating systems to our battery of tests.
|
---|
12 |
|
---|
13 | We warmly welcome contributions, new ideas for good tests and fixes.
|
---|
14 |
|
---|
15 |
|
---|
16 | Directory Layout
|
---|
17 | ----------------
|
---|
18 |
|
---|
19 | ./docs/
|
---|
20 | The documentation for the test suite mostly lives here, the exception being
|
---|
21 | readme.txt files that are better off living near what they concern.
|
---|
22 |
|
---|
23 | For a definition of terms used here, see the Definitions / Glossary section
|
---|
24 | of ./docs/AutomaticTestingRevamp.txt / ./docs/AutomaticTestingRevamp.html.
|
---|
25 |
|
---|
26 | ./testdriver/
|
---|
27 | Python module implementing the base test drivers and supporting stuff.
|
---|
28 | The base test driver implementation is found in ./testdriver/base.py while
|
---|
29 | the VBox centric specialization is in ./testdriver/vbox.py. Various VBox
|
---|
30 | API wrappers that makes things easier to use and glosses over a lot of API
|
---|
31 | version differences that live in ./testdriver/vboxwrappers.py.
|
---|
32 |
|
---|
33 | Test VM collections are often managed thru ./testdriver/vboxtestvms.py, but
|
---|
34 | doesn't necessarily have to be, it's up to the individual test driver.
|
---|
35 |
|
---|
36 | For logging, reporting result, uploading useful files and such we have a
|
---|
37 | reporter singleton sub-package, ./testdriver/reporter.py. It implements
|
---|
38 | both local (for local testing) and remote (for testboxes + test manager)
|
---|
39 | reporting.
|
---|
40 |
|
---|
41 | There is also a VBoxTXS client implementation in txsclient.py and a stacked
|
---|
42 | test driver for installing VBox (vboxinstaller.py). Most test drivers will
|
---|
43 | use the TXS client indirectly thru vbox.py methods. The installer driver
|
---|
44 | is a special trick for the testbox+testmanager setup.
|
---|
45 |
|
---|
46 | ./tests/
|
---|
47 | The python scripts driving the tests. These are organized by what they
|
---|
48 | test and are all derived from the base classes in ./testdriver (mostly from
|
---|
49 | vbox.py of course). Most tests use one or more VMs from a standard set of
|
---|
50 | preconfigured VMs defined by ./testdriver/vboxtestvms.py (mentioned above),
|
---|
51 | though the installation tests used prepared ISOs and floppy images.
|
---|
52 |
|
---|
53 | ./vms/
|
---|
54 | Text documents describing the preconfigured test VMs defined by
|
---|
55 | ./testdrive/vboxtestvms.py. This will also contain description of how to
|
---|
56 | prepare installation ISOs when we get around to it (soon).
|
---|
57 |
|
---|
58 | ./utils/
|
---|
59 | Test utilities and lower level test programs, compiled from C, C++ and
|
---|
60 | Assembly mostly. Generally available for both host and guest, i.e. in the
|
---|
61 | zip and on the VBoxValidationKit.iso respectively.
|
---|
62 |
|
---|
63 | The Test eXecution Service (VBoxTXS) found in ./utils/TestExecServ is one
|
---|
64 | of the more important utilities. It implements a remote execution service
|
---|
65 | for running programs/tests inside VMs and on other test boxes. See
|
---|
66 | ./utils/TestExecServ/vboxtxs-readme.txt for more details.
|
---|
67 |
|
---|
68 | A simple network bandwidth and latency test program can be found in
|
---|
69 | ./utils/network/NetPerf.cpp.
|
---|
70 |
|
---|
71 | ./bootsectors/
|
---|
72 | Boot sector test environment. This allows creating floppy images in
|
---|
73 | assembly that tests specific CPU or device behavior. Most tests can be
|
---|
74 | put on a USB stick, floppy or similar and booted up on real hardware for
|
---|
75 | comparison. All floppy images can be used for manual testing by developers
|
---|
76 | and most will be used by test drivers (./tests/*/td*.py) sooner or later.
|
---|
77 |
|
---|
78 | The boot sector environment is heavily bound to yasm and it's ability to
|
---|
79 | link binary images for single assembly input units. There is a "library"
|
---|
80 | of standard initialization code and runtime code, which include switch to
|
---|
81 | all (well V8086 mode is still missing, but we'll get that done eventually)
|
---|
82 | processor modes and paging modes. The image specific code is split into
|
---|
83 | init/driver code and test template, the latter can be instantiated for each
|
---|
84 | process execution+paging mode.
|
---|
85 |
|
---|
86 | ./common/
|
---|
87 | Python package containing common python code.
|
---|
88 |
|
---|
89 | ./testboxscript/
|
---|
90 | The testbox script. This is installed on testboxes used for automatic
|
---|
91 | testing with the testmanager.
|
---|
92 |
|
---|
93 | ./testmanager/
|
---|
94 | The VirtualBox Test Manager (server side code). This is written in Python
|
---|
95 | and currently uses postgresql as database backend for no particular reason
|
---|
96 | other than that it was already installed on the server the test manager was
|
---|
97 | going to run on. It's relatively generic, though there are of course
|
---|
98 | things in there that are of more use when testing VirtualBox than other
|
---|
99 | things. A more detailed account (though perhaps a little dated) of the
|
---|
100 | test manager can be found in ./docs/AutomaticTestingRevamp.txt and
|
---|
101 | ./docs/AutomaticTestingRevamp.html.
|
---|
102 |
|
---|
103 | ./testanalysis/
|
---|
104 | A start a local test result analysis, comparing network test output. We'll
|
---|
105 | probably be picking this up again later.
|
---|
106 |
|
---|
107 | ./snippets/
|
---|
108 | Various code snippets that may be turned into real tests at some point.
|
---|
109 |
|
---|
110 |
|
---|
111 |
|
---|
112 | :Status: $Id: VBoxValidationKitReadMe.txt 98106 2023-01-17 22:43:07Z vboxsync $
|
---|
113 | :Copyright: Copyright (C) 2010-2023 Oracle Corporation.
|
---|