Spaces:
Runtime error
Runtime error
| # kvm-unit-tests for v86 | |
| Run the following to run this test: | |
| ```sh | |
| ./configure | |
| make | |
| make -C ../../build/libv86.js | |
| ./run.js x86/realmode.flat | |
| ./run.js x86/setjmp.flat | |
| ./run.js x86/cmpxchg8b.flat | |
| ./run.js x86/sieve.flat | |
| ./run.js x86/ioapic.flat | |
| ./run.js x86/apic.flat | |
| ./run.js x86/pae.flat | |
| ``` | |
| Tests can also be run in browser by going to `?profile=test-$name` (for | |
| example, `?profile=test-realmode`). | |
| Most tests require you to set `acpi: true` in the v86 constructor. | |
| # Welcome to kvm-unit-tests | |
| See http://www.linux-kvm.org/page/KVM-unit-tests for a high-level | |
| description of this project, as well as running tests and adding | |
| tests HOWTOs. | |
| # Building the tests | |
| This directory contains sources for a kvm test suite. | |
| To create the test images do: | |
| ./configure | |
| make | |
| in this directory. Test images are created in ./<ARCH>/*.flat | |
| ## Standalone tests | |
| The tests can be built as standalone | |
| To create and use standalone tests do: | |
| ./configure | |
| make standalone | |
| (send tests/some-test somewhere) | |
| (go to somewhere) | |
| ./some-test | |
| 'make install' will install all tests in PREFIX/share/kvm-unit-tests/tests, | |
| each as a standalone test. | |
| # Running the tests | |
| Then use the runner script to detect the correct invocation and | |
| invoke the test: | |
| ./x86-run ./x86/msr.flat | |
| or: | |
| ./run_tests.sh | |
| to run them all. | |
| To select a specific qemu binary, specify the QEMU=<path> | |
| environment variable: | |
| QEMU=/tmp/qemu/x86_64-softmmu/qemu-system-x86_64 ./x86-run ./x86/msr.flat | |
| # Unit test inputs | |
| Unit tests use QEMU's '-append <args...>' parameter for command line | |
| inputs, i.e. all args will be available as argv strings in main(). | |
| Additionally a file of the form | |
| KEY=VAL | |
| KEY2=VAL | |
| ... | |
| may be passed with '-initrd <file>' to become the unit test's environ, | |
| which can then be accessed in the usual ways, e.g. VAL = getenv("KEY") | |
| Any key=val strings can be passed, but some have reserved meanings in | |
| the framework. The list of reserved environment variables is below | |
| QEMU_ACCEL ... either kvm or tcg | |
| QEMU_VERSION_STRING ... string of the form `qemu -h | head -1` | |
| KERNEL_VERSION_STRING ... string of the form `uname -r` | |
| Additionally these self-explanatory variables are reserved | |
| QEMU_MAJOR, QEMU_MINOR, QEMU_MICRO, KERNEL_VERSION, KERNEL_PATCHLEVEL, | |
| KERNEL_SUBLEVEL, KERNEL_EXTRAVERSION | |
| # Contributing | |
| ## Directory structure | |
| .: configure script, top-level Makefile, and run_tests.sh | |
| ./scripts: helper scripts for building and running tests | |
| ./lib: general architecture neutral services for the tests | |
| ./lib/<ARCH>: architecture dependent services for the tests | |
| ./<ARCH>: the sources of the tests and the created objects/images | |
| See <ARCH>/README for architecture specific documentation. | |
| ## Style | |
| Currently there is a mix of indentation styles so any changes to | |
| existing files should be consistent with the existing style. For new | |
| files: | |
| - C: please use standard linux-with-tabs | |
| - Shell: use TABs for indentation | |
| ## Patches | |
| Patches are welcome at the KVM mailing list <kvm@vger.kernel.org>. | |
| Please prefix messages with: [kvm-unit-tests PATCH] | |
| You can add the following to .git/config to do this automatically for you: | |
| [format] | |
| subjectprefix = kvm-unit-tests PATCH | |
| Additionally it's helpful to have a common order of file types in patches. | |
| Our chosen order attempts to place the more declarative files before | |
| the code files. We also start with common code and finish with unit test | |
| code. git-diff's orderFile feature allows us to specify the order in a | |
| file. The orderFile we use is `scripts/git.difforder`. Adding the config | |
| with `git config diff.orderFile scripts/git.difforder` enables it. | |