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