Commit Graph

144 Commits

Author SHA1 Message Date
Eelco Dolstra
8aad8c536f * Make virtualisation.qemu.options a list.
svn path=/nixos/trunk/; revision=28120
2011-08-02 06:52:10 +00:00
Eelco Dolstra
2dc81fc9dd * Shut up warnings about QEMU_OPTS being undefined.
svn path=/nixos/trunk/; revision=27982
2011-07-28 09:41:07 +00:00
Eelco Dolstra
650d14be8d * Remove most references to the "services" tree.
svn path=/nixos/trunk/; revision=26990
2011-04-27 13:16:33 +00:00
Eelco Dolstra
0f544f1ea8 * Add a command `forwardPort' to forward a TCP port on the host to a
TCP port on the guest.  Useful during testing (e.g. to access a web
  server in the guest through a web browser on the host).

svn path=/nixos/trunk/; revision=26987
2011-04-27 09:54:17 +00:00
Rob Vermaas
22a4047b1b NixOS/124: The system_tarball Hydra job should define a build product
svn path=/nixos/trunk/; revision=26788
2011-04-12 07:45:54 +00:00
Eelco Dolstra
c430bf5cc3 * Add virtio_console to the CD because the backdoor requires it.
* The booted CD no longer requires "-net user".

svn path=/nixos/trunk/; revision=26427
2011-03-19 08:58:56 +00:00
Eelco Dolstra
be0fca5781 * Use QEMU/KVM's paravirtualised console device for the backdoor.
This has the advantage that it doesn't depend on networking being
  up.
* Move common QEMU/KVM guest configuration to profiles/qemu-guest.nix.

svn path=/nixos/trunk/; revision=26421
2011-03-18 12:38:22 +00:00
Eelco Dolstra
8ce36ffb3a * Use "ip" instead of "ifconfig" for setting up network interfaces,
since the latter is rather deprecated and has been unmaintained
  since 2001.  Note that "ip" doesn't know about classful addressing,
  so you can no longer get away with not specifying the subnet mask
  for explicitly configured interfaces.  So if you had

    networking.interfaces =
      [ { name = "eth0"; ipAddress = "192.168.1.1"; } ];

  this should be changed to

    networking.interfaces =
      [ { name = "eth0";
          ipAddress = "192.168.1.1";
          subnetMask = "255.255.255.0";
        }
     ];

  otherwise you end up with a subnet mask of 255.255.255.255.

svn path=/nixos/trunk/; revision=26279
2011-03-11 14:50:11 +00:00
Eelco Dolstra
158a60465f * The vde_switch startup code was reading from the wrong filehandle,
so the startup synchronisation didn't work, causing spurious QEMU
  failures ("Device 'vde' could not be initialized").

svn path=/nixos/trunk/; revision=26055
2011-02-22 10:41:11 +00:00
Eelco Dolstra
32aa967ee1 * Only add a VDE NIC if there is a webserver.
svn path=/nixos/trunk/; revision=25986
2011-02-16 10:07:28 +00:00
Eelco Dolstra
49213aa80a * Doh! Exceptions outside of subtests were silently ignored.
svn path=/nixos/trunk/; revision=25981
2011-02-15 15:04:17 +00:00
Sander van der Burg
96b769c979 Removed the backdoor, because it does not work anymore and it has also become obsolete (Disnix uses something else now)
svn path=/nixos/trunk/; revision=25601
2011-01-17 16:15:59 +00:00
Eelco Dolstra
066f76e65f * Remove "nix-build tests -A foo.vms; ./result/bin/run-vms" as a way
to run the VMs of a test.  Instead, you can do

    $ nix-build tests -A foo.driver
    $ ./result/bin/nixos-run-vms

  This uses the test driver infrastructure, which is necessary in
  order to set up the VDE switches.

svn path=/nixos/trunk/; revision=25586
2011-01-16 14:21:47 +00:00
Eelco Dolstra
88a4fda7d8 * Don't daemonise vde_switch so that it's cleaned up automatically.
This is useful for interactive use.

svn path=/nixos/trunk/; revision=25570
2011-01-14 16:01:47 +00:00
Eelco Dolstra
2ac09578c0 * runInMachine: properly evaluate the machine configuration.
svn path=/nixos/trunk/; revision=25536
2011-01-13 11:39:03 +00:00
Eelco Dolstra
06a239a699 * runInMachine: use buildVM rather than buildVirtualNetwork since
there is only one machine.
* Add a simple test case for runInMachine.

svn path=/nixos/trunk/; revision=25535
2011-01-13 10:54:07 +00:00
Eelco Dolstra
b3dbcbe249 * Use vde_switch instead of QEMU's multicast feature to tie QEMU VMs
together into virtual networks.  This has several advantages:

  - It's more secure because the QEMU instances use Unix domain
    sockets to talk to the switch.

  - It doesn't depend on the host's network interfaces.  (Local
    multicast fails if there is no default gateway, so for instance it
    fails if a laptop is not connected to any network.)

  - VDE devices can be connected together to form arbitrary network
    topologies.

  - VDE has a "wirefilter" tool to emulate delays and packet loss,
    which are useful for network testing.

svn path=/nixos/trunk/; revision=25526
2011-01-12 18:47:23 +00:00
Eelco Dolstra
5560e422ad * Prerender the tree toggle.
svn path=/nixos/trunk/; revision=25494
2011-01-10 15:29:22 +00:00
Eelco Dolstra
0b33ba7e53 * Clean up the presentation of the log file a bit.
svn path=/nixos/trunk/; revision=25493
2011-01-10 15:17:38 +00:00
Eelco Dolstra
60b6eb7579 * Add a method Machine::sleep to sleep N seconds in virtual (guest)
time rather than host real time.

svn path=/nixos/trunk/; revision=25491
2011-01-10 14:41:16 +00:00
Eelco Dolstra
8f831338df * Log top-level errors.
svn path=/nixos/trunk/; revision=25482
2011-01-09 22:52:27 +00:00
Eelco Dolstra
ef82cd9c48 * Coverage report: propagate the build products of the VM test run.
* Run the Quake 3 with coverage instrumentation.

svn path=/nixos/trunk/; revision=25480
2011-01-09 22:21:22 +00:00
Eelco Dolstra
20b8258e68 * Handle the case where a machine produces no coverage data.
svn path=/nixos/trunk/; revision=25477
2011-01-09 21:37:01 +00:00
Eelco Dolstra
b5b7375eea * If a subtest fails, mark the build as failed.
svn path=/nixos/trunk/; revision=25474
2011-01-09 18:56:11 +00:00
Eelco Dolstra
7fd8ce0d95 * If a subtest fails, continue to the next subtest.
svn path=/nixos/trunk/; revision=25472
2011-01-09 18:46:02 +00:00
Eelco Dolstra
260d9faee7 * Urgh.
svn path=/nixos/trunk/; revision=25471
2011-01-09 18:31:03 +00:00
Eelco Dolstra
a3aa97009c * Doh.
svn path=/nixos/trunk/; revision=25469
2011-01-09 18:16:59 +00:00
Eelco Dolstra
e4c1fb3ea7 * Pretty-print the VM build log and publish it as a build product.
svn path=/nixos/trunk/; revision=25468
2011-01-09 17:58:52 +00:00
Eelco Dolstra
405e4dd42e * Somewhere "set_link" stopped accepting "down" and "up" as valid
parameters.

svn path=/nixos/trunk/; revision=25466
2011-01-09 15:44:48 +00:00
Eelco Dolstra
e343a16a36 * Improved logging in the test driver.
* Support subtests.

svn path=/nixos/trunk/; revision=25451
2011-01-06 17:28:35 +00:00
Eelco Dolstra
7378e17f74 * Test driver: write structured log info to $out/log.xml (not finished
yet).
* Machine->new -> createMachine (because VMs must be tracked in the
  %vms hash).

svn path=/nixos/trunk/; revision=25427
2011-01-05 15:27:21 +00:00
Eelco Dolstra
0966854590 * Use makeWrapper in building the test driver.
* In the interactive test driver, provide a function "testScript" to
  run the non-interactive test script.

svn path=/nixos/trunk/; revision=25426
2011-01-05 14:04:38 +00:00
Eelco Dolstra
ace958f669 * Sync with the trunk.
svn path=/nixos/branches/stdenv-updates/; revision=25307
2010-12-28 15:56:22 +00:00
Rob Vermaas
c8afc67f6a lib/testing.nix: vm state of nixos machines in network changed location
svn path=/nixos/trunk/; revision=25222
2010-12-21 10:57:19 +00:00
Lluís Batlle i Rossell
3f7751b9c2 Merging from trunk
svn path=/nixos/branches/stdenv-updates/; revision=25176
2010-12-17 14:59:04 +00:00
Eelco Dolstra
e90a1cfc59 * A quick hack to enable debugging of VM test scripts: the test script
is now made available in the interactive test driver.  For instance,
  you can do

  $ nix-build tests/ -A quake3.driver
  $ ./result/bin/nixos-test-driver
  > eval $ENV{'testScript'};
  ... see VMs + X11 + Quake get started, bots running around ...
  >

  So after this you can run commands interactively on the VMs in the
  state they were in after the conclusion of the test script.

svn path=/nixos/trunk/; revision=25158
2010-12-16 19:35:43 +00:00
Eelco Dolstra
dac1936869 * If $DISPLAY is set (i.e. in interactive mode), show QEMU's graphical
output.

svn path=/nixos/trunk/; revision=25157
2010-12-16 16:58:06 +00:00
Eelco Dolstra
445827ad45 * Added a convenience derivation for running the test driver
interactively on a network specification.  For instance:

  $ nix-build tests/ -A quake3.driver
  $ ./result/bin/nixos-test-driver
  > startAll;
  client1: starting vm
  client1: QEMU running (pid 14971)
  server: starting vm
  server: QEMU running (pid 14982)
  ...
  > $client1->execute("quake3 ...");

* Use the GNU readline library in interactive mode.

svn path=/nixos/trunk/; revision=25156
2010-12-16 15:54:15 +00:00
Eelco Dolstra
8496dbf350 * Absolutize the path to the VM start script.
svn path=/nixos/trunk/; revision=25154
2010-12-16 13:53:17 +00:00
Eelco Dolstra
2e38d8cd31 * ZOMG, fixed a giant bug in the networking of distributed VM tests.
It turns out that all network interfaces in all VMs had the same
  Ethernet address (52:54:00:12:34:56) because we didn't specify any
  with the macaddr=... option.  This can obviously lead to great
  confusion.  For instance, when a router forwards a packet, it can
  actually end up sending the packet to itself because the target
  machine has the same Ethernet address (causing a loop until the TTL
  expires), while the target *also* receives the packet.  It's amazing
  anything worked at all, really.

  So now we just set the Ethernet addresses to 52:54:00:12:<virtual
  network number>:<machine number>.

svn path=/nixos/trunk/; revision=25020
2010-12-07 00:44:29 +00:00
Lluís Batlle i Rossell
25b9c03571 Updating from trunk (specially for the enableFontDir option, as it was not up
to date for nixpkgs)


svn path=/nixos/branches/stdenv-updates/; revision=24871
2010-11-26 14:16:12 +00:00
Eelco Dolstra
c958902d44 * Added an option "nixpkgs.system" to specify the system type for
which NixOS should be built.  This is useful in NixOS network
  specifications, because it allows machines in the network to have
  different types, e.g.,

    {
      machine1 =
        { config, pkgs, ... }:
        { nixpkgs.system = "i686-linux";
          ... other config ...
        };

      machine2 =
        { config, pkgs, ... }:
        { nixpkgs.system = "x86_64-linux";
          ... other config ...
        };
    }

  It can also be useful in distributed NixOS tests.

svn path=/nixos/trunk/; revision=24823
2010-11-23 16:07:00 +00:00
Lluís Batlle i Rossell
ccc99b3fc0 Updating from trunk
svn path=/nixos/branches/stdenv-updates/; revision=24555
2010-10-31 19:36:37 +00:00
Sander van der Burg
9c722e474d - Added nixos-build-vms command, which builds a virtual network from a network.nix expression (also used by nixos-deploy-network)
- Added a backdoor option to the interactive run-vms script. This allows me to intergrate the virtual network approach with Disnix
- Small documentation fixes

Some explanation:

The nixos-build-vms command line tool can be used to build a virtual network of a network.nix specification.
For example, a network configuration (network.nix) could look like this:

{
  test1 = 
    {pkgs, config, ...}:
 
    {
      services.openssh.enable = true;
      ...
    };

  test2 =
    {pkgs, config, ...}:
    
    {
      services.openssh.enable = true;
      services.xserver.enable = true;
    }

    ;
}

By typing the following instruction:

$ nixos-build-vms -n network.nix

a virtual network is built, which can be started by typing:

$ ./result/bin/run-vms

It is also possible to enable a backdoor. In this case *.socket files are stored in the current directory
which can be used by the end-user to invoke remote instruction on a VM in the network through a Unix
domain socket.

For example by building the network with the following instructions:

$ nixos-build-vms -n network.nix --use-backdoor

and launching the virtual network:

$ ./result/bin/run-vms

You can find two socket files in your current directory, namely: test1.socket and test2.socket.
These Unix domain sockets can be used to remotely administer the test1 and test2 machine
in the virtual network.

For example by running:

$ socat ./test1.socket stdio
ls /root

You can retrieve the contents of the /root directory of the virtual machine with identifier test1


svn path=/nixos/trunk/; revision=24410
2010-10-21 22:50:12 +00:00
Lluís Batlle i Rossell
1acbc4a82f Updating from trunk. Blind commit - no coflicts.
svn path=/nixos/branches/stdenv-updates/; revision=24370
2010-10-19 20:45:35 +00:00
Ludovic Courtès
4695f790cf test-driver: Add `startJob' method.
svn path=/nixos/trunk/; revision=24210
2010-10-10 22:37:45 +00:00
Lluís Batlle i Rossell
ccf7852e11 Updating the system-tarball work, having just tested that of the fuloong2f.
svn path=/nixos/branches/stdenv-updates/; revision=23689
2010-09-08 16:53:36 +00:00
Lluís Batlle i Rossell
7fe1c5fe90 Making eval-config not pass 'platform' as a nixpkgs parameter, but expect a nixpkgs config attribute.
svn path=/nixos/branches/stdenv-updates/; revision=23688
2010-09-08 16:52:15 +00:00
Eelco Dolstra
0bfba4cbf5 * Require KVM.
svn path=/nixos/trunk/; revision=23538
2010-08-29 23:24:54 +00:00
Rob Vermaas
310fffa974 nixos/lib/testing.nix: propogate exit code in runInVM function
svn path=/nixos/trunk/; revision=23102
2010-08-11 07:40:16 +00:00