All action functions are generated automatically, so there are only
two files you need to edit:
-(1) src/generator.ml: Add your new action, parameters, description,
-etc. to the big list called 'functions' at the top of this file.
+(1) generator/generator_actions.ml: Add your new action, parameters,
+description, etc. to the big list at the top of this file.
(2) Edit/create a C file in daemon/ subdirectory which implements your
'do_action' function. Take a look at one of the numerous examples
The qemu appliance, build scripts and so on.
capitests/
- Automated tests of the C API.
+ Automated tests of the C API. See "Tests" below.
+
+cat/
+ The 'virt-cat', 'virt-filesystems' and 'virt-ls' commands and
+ documentation.
contrib/
Outside contributions, experimental parts.
daemon/
The daemon that runs inside the guest and carries out actions.
+df/
+ 'virt-df' command and documentation.
+
examples/
The examples.
fuse/
FUSE (userspace filesystem) built on top of libguestfs.
+generator/
+ The crucially important generator, used to automatically
+ generate large amounts of boilerplate C code for things like
+ RPC and bindings.
+
haskell/
Haskell bindings.
-hivex/
- Hive extraction library, for reading Windows Registry files.
- See hivex/README for more details.
+hivex/ [removed in 1.0.85]
+ This used to contain the hivex library for reading and
+ writing Windows Registry binary hive files. This is now
+ available as a separate upstream project.
images/
Some guest images to test against. These are gzipped to save
ocaml/
OCaml bindings.
+php/
+ PHP bindings.
+
po/
- Translations.
+ Translations of simple gettext strings. For translations of
+ longer documents, see po-docs/.
+
+po-docs/
+ The build infrastructure and PO files for translations of
+ manpages and POD files. Eventually this will be combined
+ with the po/ directory, but that is rather complicated.
perl/
Perl bindings.
regressions/
Regression tests.
+rescue/
+ 'virt-rescue' command and documentation.
+
ruby/
Ruby bindings.
tools/
- Command line tools like virt-cat, virt-df, virt-edit and more.
- In versions <= 1.0.73 these were all in separate directories
- like cat/, df/, edit/, but since then we moved them all into
- one directory to simplify builds.
+ Command line tools written in Perl (virt-resize and more).
src/
Source code to the C library.
- Also contains the crucial generator program.
test-tool/
Interactive qemu/kernel test tool.
+Tests
+----------------------------------------------------------------------
+
+You can supply zero or as many tests as you want per API call.
+
+Note that the test environment has 3 block devices, of size 500MB,
+50MB and 10MB (respectively /dev/sda, /dev/sdb, /dev/sdc), and
+a fourth ISO block device with some known files on it (/dev/sdd).
+
+Note for partitioning purposes, the 500MB device has 1015 cylinders.
+Number of cylinders was 63 for IDE emulated disks with precisely
+the same size. How exactly this is calculated is a mystery.
+
+The ISO block device (/dev/sdd) comes from images/test.iso.
+
+To be able to run the tests in a reasonable amount of time,
+the virtual machine and block devices are reused between tests.
+So don't try testing kill_subprocess :-x
+
+Between each test we blockdev-setrw, umount-all, lvm-remove-all.
+
+Don't assume anything about the previous contents of the block
+devices. Use 'Init*' to create some initial scenarios.
+
+You can add a prerequisite clause to any individual test. This
+is a run-time check, which, if it fails, causes the test to be
+skipped. Useful if testing a command which might not work on
+all variations of libguestfs builds. A test that has prerequisite
+of 'Always' is run unconditionally.
+
+In addition, packagers can skip individual tests by setting the
+environment variables: eg:
+ SKIP_TEST_<CMD>_<NUM>=1 SKIP_TEST_COMMAND_3=1 (skips test #3 of command)
+ SKIP_TEST_<CMD>=1 SKIP_TEST_ZEROFREE=1 (skips all zerofree tests)
+
Debugging
----------------------------------------------------------------------