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