vuls: init at 0.27.0
[NixPkgs.git] / nixos / tests / postgresql-jit.nix
blobf4b1d07a7faf88c801a901db07f138f0ea698cf7
1 { system ? builtins.currentSystem
2 , config ? {}
3 , pkgs ? import ../.. { inherit system config; }
4 , package ? null
5 }:
7 with import ../lib/testing-python.nix { inherit system pkgs; };
9 let
10   inherit (pkgs) lib;
11   packages = builtins.attrNames (import ../../pkgs/servers/sql/postgresql pkgs);
13   mkJitTestFromName = name:
14     mkJitTest pkgs.${name};
16   mkJitTest = package: makeTest {
17     name = package.name;
18     meta.maintainers = with lib.maintainers; [ ma27 ];
19     nodes.machine = { pkgs, lib, ... }: {
20       services.postgresql = {
21         inherit package;
22         enable = true;
23         enableJIT = true;
24         initialScript = pkgs.writeText "init.sql" ''
25           create table demo (id int);
26           insert into demo (id) select generate_series(1, 5);
27         '';
28       };
29     };
30     testScript = ''
31       machine.start()
32       machine.wait_for_unit("postgresql.service")
34       with subtest("JIT is enabled"):
35           machine.succeed("sudo -u postgres psql <<<'show jit;' | grep 'on'")
37       with subtest("Test JIT works fine"):
38           output = machine.succeed(
39               "cat ${pkgs.writeText "test.sql" ''
40                 set jit_above_cost = 1;
41                 EXPLAIN ANALYZE SELECT CONCAT('jit result = ', SUM(id)) FROM demo;
42                 SELECT CONCAT('jit result = ', SUM(id)) from demo;
43               ''} | sudo -u postgres psql"
44           )
45           assert "JIT:" in output
46           assert "jit result = 15" in output
48       machine.shutdown()
49     '';
50   };
52 if package == null then
53   lib.genAttrs packages mkJitTestFromName
54 else
55   mkJitTest package