Allow overriding all NixOS tests to run with the minimal kernel possible for that test's config(s) (based on requiredKernelConfig)

wip/yesman
Shea Levy 12 years ago
parent feb010a366
commit 1b615f460b
  1. 4
      lib/build-vms.nix
  2. 4
      lib/testing.nix
  3. 28
      modules/testing/minimal-kernel.nix
  4. 6
      release.nix
  5. 5
      tests/default.nix
  6. 37
      tests/minimal-kernel.nix

@ -1,4 +1,4 @@
{ system }:
{ system, minimal ? false }:
let pkgs = import <nixpkgs> { config = {}; inherit system; }; in
@ -27,7 +27,7 @@ rec {
[ ../modules/virtualisation/qemu-vm.nix
../modules/testing/test-instrumentation.nix # !!! should only get added for automated test runs
{ key = "no-manual"; services.nixosManual.enable = false; }
];
] ++ lib.optional minimal ../modules/testing/minimal-kernel.nix;
extraArgs = { inherit nodes; };
};

@ -1,6 +1,6 @@
{ system }:
{ system, minimal ? false }:
with import ./build-vms.nix { inherit system; };
with import ./build-vms.nix { inherit system minimal; };
with pkgs;
rec {

@ -0,0 +1,28 @@
{ config, pkgs, ... }:
let
configfile = builtins.storePath (builtins.toFile "config" (pkgs.lib.concatStringsSep "\n"
(map (builtins.getAttr "configLine") config.system.requiredKernelConfig))
);
origKernel = pkgs.linuxManualConfig {
inherit (pkgs.linux) src version;
inherit configfile;
allowImportFromDerivation = true;
kernelPatches = [ pkgs.kernelPatches.cifs_timeout_2_6_38 ];
};
kernel = origKernel // (derivation (origKernel.drvAttrs // {
configurePhase = ''
runHook preConfigure
mkdir ../build
make $makeFlags "''${makeFlagsArray[@]}" mrproper
make $makeFlags "''${makeFlagsArray[@]}" KCONFIG_ALLCONFIG=${configfile} allnoconfig
runHook postConfigure
'';
}));
kernelPackages = pkgs.linuxPackagesFor kernel kernelPackages;
in {
boot.kernelPackages = kernelPackages;
}

@ -1,5 +1,6 @@
{ nixosSrc ? {outPath = ./.; revCount = 1234; shortRev = "abcdef"; }
, nixpkgs ? {outPath = <nixpkgs>; revCount = 5678; shortRev = "fedcba"; }
, minimal ? false
}:
let
@ -194,8 +195,8 @@ let
tests =
let
t = import ./tests { system = "i686-linux"; };
t_64 = import ./tests { system = "x86_64-linux"; };
t = import ./tests { system = "i686-linux"; inherit minimal; };
t_64 = import ./tests { system = "x86_64-linux"; inherit minimal; };
in {
avahi = t.avahi.test;
bittorrent = t.bittorrent.test;
@ -212,7 +213,6 @@ let
kde4 = t.kde4.test;
login = t.login.test;
misc = t.misc.test;
minimal_kernel = t.minimal_kernel.test;
mpich = t.mpich.test;
mysql = t.mysql.test;
mysql_replication = t.mysql_replication.test;

@ -1,6 +1,6 @@
{ system ? builtins.currentSystem }:
{ system ? builtins.currentSystem, minimal ? false }:
with import ../lib/testing.nix { inherit system; };
with import ../lib/testing.nix { inherit system minimal; };
{
avahi = makeTest (import ./avahi.nix);
@ -11,7 +11,6 @@ with import ../lib/testing.nix { inherit system; };
ipv6 = makeTest (import ./ipv6.nix);
kde4 = makeTest (import ./kde4.nix);
login = makeTest (import ./login.nix);
minimal_kernel = makeTest (import ./minimal-kernel.nix);
misc = makeTest (import ./misc.nix);
mpich = makeTest (import ./mpich.nix);
mysql = makeTest (import ./mysql.nix);

@ -1,37 +0,0 @@
{ pkgs, ... }:
{
machine = { config, pkgs, ... }:
let
configfile = builtins.storePath (builtins.toFile "config" (pkgs.lib.concatStringsSep "\n"
(map (builtins.getAttr "configLine") config.system.requiredKernelConfig)));
origKernel = pkgs.linuxManualConfig {
inherit (pkgs.linux) src version;
inherit configfile;
allowImportFromDerivation = true;
kernelPatches = [ pkgs.kernelPatches.cifs_timeout_2_6_38 ];
};
kernel = origKernel //(derivation (origKernel.drvAttrs // {
configurePhase = ''
runHook preConfigure
mkdir ../build
make $makeFlags "''${makeFlagsArray[@]}" mrproper
make $makeFlags "''${makeFlagsArray[@]}" KCONFIG_ALLCONFIG=${configfile} allnoconfig
runHook postConfigure
'';
}));
kernelPackages = pkgs.linuxPackagesFor kernel kernelPackages;
in {
boot.kernelPackages = kernelPackages;
};
testScript =
''
startAll;
$machine->shutdown;
'';
}
Loading…
Cancel
Save