1{ system ? builtins.currentSystem
2, config ? { }
3, pkgs ? import ../.. { inherit system config; }
4}@args:
5
6with pkgs.lib;
7
8let
9 stapScript = pkgs.writeText "test.stp" ''
10 probe kernel.function("do_sys_poll") {
11 println("kernel function probe & println work")
12 exit()
13 }
14 '';
15
16 ## TODO shared infra with ../kernel-generic.nix
17 testsForLinuxPackages = linuxPackages: (import ./make-test-python.nix ({ pkgs, ... }: {
18 name = "kernel-${linuxPackages.kernel.version}";
19 meta = with pkgs.lib.maintainers; {
20 maintainers = [ bendlas ];
21 };
22
23 nodes.machine = { ... }:
24 {
25 boot.kernelPackages = linuxPackages;
26 programs.systemtap.enable = true;
27 };
28
29 testScript =
30 ''
31 with subtest("Capture stap ouput"):
32 output = machine.succeed("stap ${stapScript} 2>&1")
33
34 with subtest("Ensure that expected output from stap script is there"):
35 assert "kernel function probe & println work\n" == output, "kernel function probe & println work\n != " + output
36 '';
37 }) args);
38
39 ## TODO shared infra with ../kernel-generic.nix
40 kernels = {
41 inherit (pkgs.linuxKernel.packageAliases) linux_default linux_latest;
42 };
43
44in mapAttrs (_: lP: testsForLinuxPackages lP) kernels // {
45 passthru = {
46 inherit testsForLinuxPackages;
47
48 testsForKernel = kernel: testsForLinuxPackages (pkgs.linuxPackagesFor kernel);
49 };
50}