Merge pull request #305845 from abathur/resholve_0.10.5
[NixPkgs.git] / nixos / tests / isolate.nix
blob327231be1cd4a0c6dc7f93d1e8d75700fa28e3c3
1 import ./make-test-python.nix ({ lib, ... }:
3   name = "isolate";
4   meta.maintainers = with lib.maintainers; [ virchau13 ];
6   nodes.machine =
7     { ... }:
8     {
9       security.isolate = {
10         enable = true;
11       };
12     };
14   testScript = ''
15     bash_path = machine.succeed('realpath $(which bash)').strip()
16     sleep_path = machine.succeed('realpath $(which sleep)').strip()
17     def sleep_test(walltime, sleeptime):
18         return f'isolate --no-default-dirs --wall-time {walltime} ' + \
19             f'--dir=/box={box_path} --dir=/nix=/nix --run -- ' + \
20             f"{bash_path} -c 'exec -a sleep {sleep_path} {sleeptime}'"
22     def sleep_test_cg(walltime, sleeptime):
23         return f'isolate --cg --no-default-dirs --wall-time {walltime} ' + \
24             f'--dir=/box={box_path} --dir=/nix=/nix --processes=2 --run -- ' + \
25             f"{bash_path} -c '( exec -a sleep {sleep_path} {sleeptime} )'"
27     with subtest("without cgroups"):
28         box_path = machine.succeed('isolate --init').strip()
29         machine.succeed(sleep_test(1, 0.5))
30         machine.fail(sleep_test(0.5, 1))
31         machine.succeed('isolate --cleanup')
32     with subtest("with cgroups"):
33         box_path = machine.succeed('isolate --cg --init').strip()
34         machine.succeed(sleep_test_cg(1, 0.5))
35         machine.fail(sleep_test_cg(0.5, 1))
36         machine.succeed('isolate --cg --cleanup')
37   '';