at 25.11-pre 2.8 kB view raw
1import ./make-test-python.nix ( 2 { pkgs, ... }: 3 let 4 creds = pkgs.writeText ".monetdb" '' 5 user=monetdb 6 password=monetdb 7 ''; 8 createUser = pkgs.writeText "createUser.sql" '' 9 CREATE USER "voc" WITH PASSWORD 'voc' NAME 'VOC Explorer' SCHEMA "sys"; 10 CREATE SCHEMA "voc" AUTHORIZATION "voc"; 11 ALTER USER "voc" SET SCHEMA "voc"; 12 ''; 13 credsVoc = pkgs.writeText ".monetdb" '' 14 user=voc 15 password=voc 16 ''; 17 transaction = pkgs.writeText "transaction" '' 18 START TRANSACTION; 19 CREATE TABLE test (id int, data varchar(30)); 20 ROLLBACK; 21 ''; 22 vocData = pkgs.fetchzip { 23 url = "https://dev.monetdb.org/Assets/VOC/voc_dump.zip"; 24 hash = "sha256-sQ5acTsSAiXQfOgt2PhN7X7Z9TZGZtLrPPxgQT2pCGQ="; 25 }; 26 onboardPeople = pkgs.writeText "onboardPeople" '' 27 CREATE VIEW onboard_people AS 28 SELECT * FROM ( 29 SELECT 'craftsmen' AS type, craftsmen.* FROM craftsmen 30 UNION ALL 31 SELECT 'impotenten' AS type, impotenten.* FROM impotenten 32 UNION ALL 33 SELECT 'passengers' AS type, passengers.* FROM passengers 34 UNION ALL 35 SELECT 'seafarers' AS type, seafarers.* FROM seafarers 36 UNION ALL 37 SELECT 'soldiers' AS type, soldiers.* FROM soldiers 38 UNION ALL 39 SELECT 'total' AS type, total.* FROM total 40 ) AS onboard_people_table; 41 SELECT type, COUNT(*) AS total 42 FROM onboard_people GROUP BY type ORDER BY type; 43 ''; 44 onboardExpected = pkgs.lib.strings.replaceStrings [ "\n" ] [ "\\n" ] '' 45 +------------+-------+ 46 | type | total | 47 +============+=======+ 48 | craftsmen | 2349 | 49 | impotenten | 938 | 50 | passengers | 2813 | 51 | seafarers | 4468 | 52 | soldiers | 4177 | 53 | total | 2467 | 54 +------------+-------+ 55 ''; 56 in 57 { 58 name = "monetdb"; 59 meta = with pkgs.lib.maintainers; { 60 maintainers = [ StillerHarpo ]; 61 }; 62 nodes.machine.services.monetdb.enable = true; 63 testScript = '' 64 machine.start() 65 machine.wait_for_unit("monetdb") 66 machine.succeed("monetdbd create mydbfarm") 67 machine.succeed("monetdbd start mydbfarm") 68 machine.succeed("monetdb create voc") 69 machine.succeed("monetdb release voc") 70 machine.succeed("cp ${creds} ./.monetdb") 71 assert "hello world" in machine.succeed("mclient -d voc -s \"SELECT 'hello world'\"") 72 machine.succeed("mclient -d voc ${createUser}") 73 machine.succeed("cp ${credsVoc} ./.monetdb") 74 machine.succeed("mclient -d voc ${transaction}") 75 machine.succeed("mclient -d voc ${vocData}/voc_dump.sql") 76 assert "8131" in machine.succeed("mclient -d voc -s \"SELECT count(*) FROM voyages\"") 77 assert "${onboardExpected}" in machine.succeed("mclient -d voc ${onboardPeople}") 78 79 ''; 80 } 81)